実際のところ
鍵の生成
対話型
完全対話型でつくるなら、
$ 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
参考もと
- man gpg
- ssh config最強設定 - Qiita