Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

GnuPGで暗号化

実際のところ

鍵の生成

対話型

完全対話型でつくるなら、

$ gpg --full-generate-key 
$ gpg --full-generate-key
gpg (GnuPG) 2.2.17; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA と RSA (デフォルト)
   (2) DSA と Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
あなたの選択は? 2
DSA 鍵は 1024 から 3072 ビットの長さで可能です。
鍵長は? (2048) 1024
要求された鍵長は1024ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で期限切れ
      <n>w = 鍵は n 週間で期限切れ
      <n>m = 鍵は n か月間で期限切れ
      <n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)1
鍵は水  9/ 4 15:23:25 2019 JSTで期限切れとなります
これで正しいですか? (y/N) y
                                    
GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名: shuzo
電子メール・アドレス: shuzo@example.com
コメント: none                                   
次のユーザIDを選択しました:
    "shuzo (none) <shuzo@example.com>"

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? y
                                                                                名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
                                                                                たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
gpg: 鍵XXXXを究極的に信用するよう記録しました
gpg: ディレクトリ'/Users/shuzo_kino/.gnupg/openpgp-revocs.d'が作成されました
gpg: 失効証明書を '/Users/shuzo_kino/.gnupg/openpgp-revocs.d/XXXX.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。

pub   dsa1024 2019-09-03 [SC] [有効期限: 2019-09-04]
      XXXX
uid                      shuzo (none) <shuzo@example.com>
sub   elg1024 2019-09-03 [E] [有効期限: 2019-09-04]
設定ファイル

以下のような様式で設定ファイルを用意します。
なお、私は訳あってRSA1024bitというセキュリティ徒がみたら憤死しそうな軽〜い設定にしてますが
真っ当なセキュリティが欲しいのであれば、ビット数をあげるなり楕円暗号をつかいましょう。

$ cat taro-key.conf 
Key-Type: RSA
Key-Length: 1024
Key-Usage: sign,cert
Subkey-Type: RSA
Subkey-Length: 1024
Subkey-Usage: encrypt
Name-Real: taro
Name-Email: taro@example.com
Passphrase: yourpass
Expire-Date: 0
%commit
%echo done

作った設定ファイルを読み込み、鍵をつくります。

$ gpg --gen-key --batch taro-key.conf 
gpg: key 976XXX marked as ultimately trusted
gpg: revocation certificate stored as '/home/robot/.gnupg/openpgp-revocs.d/BBB7CCC.rev'
gpg: done

暗号化

鍵の呼び出しは"-r"でユーザ指定を。
"-a"はASCII codeで出力という意味です。
ない場合、可読性がないバイナリで出てきます。

$ date | gpg -a -r you -e  > encdata.txt.asc 

復号化

デコードも同様に"-r"でユーザ指定。

$ gpg -r you -d encdata.txt.asc 
gpg: encrypted with 1024-bit RSA key, ID ZZZ, created 2019-08-21
      "you@example <you@example.jp>"
2019年  8月 21日 水曜日 23:50:28 JST

参考もと