GnuPG の変更点


#author("2022-08-13T09:24:28+09:00","default:k1rou","k1rou")
#author("2022-08-13T09:29:55+09:00","default:k1rou","k1rou")
*GnuPG とは [#p52c1c84]
**名称 [#d2230cb7]
-GNU Privacy Guard
-GNU PG
-GPG

**概要 [#c22bbc7a]
-https://www.gnupg.org/
-[[OpenPGP]]に準拠した[[OSS]]の実装
-[[GPL]]([[OSS]])

**動作環境 [#q767c2d1]
-Unix
-Windows
-macOS

*実装する機能 [#abfa9721]
-[[S/MIME]]
-[[SSH]]

*サポートする暗号化アルゴリズム [#x55fadb9]
**[[共通鍵暗号方式]] [#p148f16a]
-[[Twofish]]
-[[3DES]]
-[[AES]]
-[[Camellia]]

**[[公開鍵暗号方式]] [#n1847005]
-[[RSA]]
-[[Elgamal]]
-[[ECDH]]

**[[ハッシュ]]関数 [#of6aab44]
-[[SHA-2]]

**[[デジタル署名]] [#wd0b26ca]
-[[DSA]]
-[[ECDSA]]
-[[EdDSA]]

*操作(Liniux) [#lecfca91]
***インストール [#ac25c1dd]
-Debian系
 apt-get install gnupg2

**公開鍵の管理 [#m6eca4ff]
-鍵ペアの作成
--プロンプトで鍵の種類・鍵長/楕円曲線・有効期限を選択して作成 ※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>

**ファイルの暗号化(公開鍵) [#r33c9cc8]
-公開鍵をエクスポート
 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>

**ファイルの暗号化(共通鍵) [#ae4a6dcd]
-ファイルを暗号化
 gpg -c <file-name>
-ファイルを復号
 gpg <file-name>
 gpg --decrypt <encrypted-file-name>

**ファイルの署名 [#p468ba65]
-ファイルに署名 ※署名ファイルを作成
--バイナリの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>

*署名のフォーマット [#b735387b]
**ASCIIのOpenPGP形式 [#q0e12f8d]
 -----BEGIN PGP MESSAGE-----
 -----END PGP MESSAGE-----

*関連サイト [#te2e94d3]
-gpgコマンドの使い方 (2019.1.30)~
https://qiita.com/kanatatsu64/items/bc05ed460eae5a4cb69e

-6. 署名と検証~
https://lecture.ecc.u-tokyo.ac.jp/~yama/2021S-JOHO/GPG/GPG/gpg_6.html

-1分でわかるPGP - 村川研究室~
https://web.wakayama-u.ac.jp/~takehiko/pgp.html

*関連ツール [#i25d47b4]
-GPG Tools
--GPG Suite

*関連用語 [#cb0967f3]
-[[暗号化]]
-[[PGP]]