gpg

入力例

  1. keyの生成
    gpg  --gen-key
    
    名前と e-mail アドレスを入力. 確認完了は
    Change (N)ame, (E)mail, or (O)kay/(Q)uit?  (O)kay?
    
    と聞かれるので O
    鍵の生成には時間がかかる. その間 mouse とかを動かしてろ, disk を使うことをやれ と指示あり. (たとえば youtube でも見てればいいはず)
  2. 完了すると次のような表示が(これは例です).
    pub   rsa3072 2022-04-17 [SC] [expires: 2024-04-16]
          EE73AD76C11ECD33DAF423CDAE175C2D3A82EFBB    # これが keyID
          EE73AD76C11ECD33DAF423CDAE175C2D3A82EFBB
    uid            Taro Kobe 
    sub   rsa3072 2022-04-17 [E] [expires: 2024-04-16]
    
  3. keyの確認 (公開鍵と秘密鍵, RSA の原理を思い出す)
    gpg --list-keys              #公開鍵(public key)のリスト
    gpg --list-secret-keys       #秘密鍵(secret key)のリスト
    
    なお key は .gnupg に格納される. # から先はコメントなので入力の必要はない.
  4. 自分のファイルを暗号化, 受取人も自分.
    gpg -r taro-kobe@math.kobe-u.ac.jp -ea 暗号化したいファイル名
    ls -l     # ファイル名を確認.  .asc のついたファイルがあるはず.
    cat  暗号化したいファイル名.asc   # 中身を見る.
    
    暗号化したいファイル名.asc が暗号化されたファイルです.
    引数の順番はこの順番で. taro-kobe@math.kobe-u.ac.jp は鍵を生成した時の自分のメールアドレスに. なお -ea などは省略記法. 省略記法を使わないと
    gpg --armor -r taro-kobe@math.kobe-u.ac.jp --encrypt 暗号化したいファイル名
    ls -l     # ファイル名を確認.  .asc のついたファイルがあるはず.
    
    --armor はテキスト形式で, の意味.
  5. 暗号化したファイルを復号化.
    gpg 暗号化したいファイル名.asc
    
    復号して, を明示したいときは
    gpg --descrypt 暗号化したいファイル名.asc
    

入力例, 他の人との暗号通信

  1. key を見てみる. 他のマシンへのコピー用.
    gpg --armor --export --output my-public-key.pub  上で表示される長いキーの名前(keyID)
    gpg --armor --export-secret-keys --output my-secret-key.sec 上で表示される長いキーの名前(keyID)
    
    my-public-key.pub my-secret-key.sec は名前の例です. 好きな名前をつけてください. "長いキーの名前" を以下 keyID と呼びます.
    --armor をつけると emacs とか cat コマンドでみれるテキストファイル形式で出力される.
  2. 公開鍵 my-public-key.pub を他の人 you に渡す.
  3. 他の人の公開鍵 your-public-key.pub を自分のシステムに登録するには
    gpg --import your-public-key.pub
    gpg --edit-key your-public-key.pub  # これはオレオレ証明なので信用度を手動で設定
      trust
      quit
    
  4. you が taro-kobe@math.kobe-u.ac.jp に暗号化したファイルを送るには you は Taro Kobe の公開鍵 my-public-key.pub をもらい you のシステムに登録してから
    gpg --armor -r taro-kobe@math.kobe-u.ac.jp --encrypt 暗号化したいファイル名
    
    暗号化したいファイル名.asc を Taro Kobe にメールなどで送る.

実験的な鍵の削除など

    gpg --delete-secret-keys keyID
    gpg --delete-keys  keyID
    

関連して覚えておくべき shell のコマンド

chmod
ls -la
rm
shred --remove

gpg がインストールされてない場合

  1. Windows/wsl の場合:
    sudo apt install gpg
    
  2. Mac/HomeBrew の場合
    brew install gpg
    

参考 web

  1. GPGによる公開鍵暗号と署名 (東大の講義資料)
  2. その他の参考 web

    1. keyの生成 (入力例, 出力例あり).
    2. key の import, export
    3. keyの削除, 他の話題も (内容は参考になるが, 広告が多すぎて読みにくいのが残念).