文章目录

  • 基础概念
  • 加密模式
  • 加密算法
  • 区别:gpg4win、gpg、openpgp、pgp
  • 基本操作 —— 主密钥操作
  • 进阶操作 —— 基础配置
  • 核心操作 —— 子密钥系统管理
  • 实战 —— 与Git结合
  • 进阶操作 —— 保护本地密钥安全
  • 备忘
  • 参考


基础概念

加密模式

  • 对称加密 —— 私钥
  • 加密 ~ 用私钥
  • 解密 ~ 用私钥
  • 非对称加密 —— 私钥、公钥
  • 加密/解密
  • 加密 ~ 公钥
  • 解密 ~ 私钥
  • 签名/认证
  • 加密 ~ 私钥 ~ 生成签名
  • 解密 ~ 公钥 ~ 验证签名

加密算法

  • RSA —— 慢、兼容好
  • RSA2048 ~ 足够用
  • RSA4096 ~ 装逼用(如果2048安全,4096安全。如果2048不安全,4096同样不安全。不安全指数学有进步,得出RSA难题更优的计算方法)
  • ECC —— 快、可能存在不支持的情况
  • Curve 25519 ~ 公有领域的产品,没有专利壁垒,且目前是安全的。(其他同类的ECC算法有的已存在了不安全风险)

区别:gpg4win、gpg、openpgp、pgp

  • gpg4win —— gpg的win gui
  • gpg —— openpgp标准的实现
  • openpgp —— 基于pgp扩展出来的密钥管理软件标准。开发者可以【免费】基于这套标准开发自己的密钥管理软件、开发gui、集成现有的密钥管理软件进入自己的项目/软件/系统。
  • pgp —— 最初的开源密钥管理软件。历史原因不再有官方发行版。

基本操作 —— 主密钥操作

主密钥操作包括增删查改用

$ gpg --full-gen-key
# --expert 专家模式。更多的选项
$ gpg --full-gen-key --expert
# 公钥
$ gpg --list-keys
# 私钥
$ gpg --list-secret-keys
$ gpg --list-secret-keys --keyid-format LONG
# 指纹
$ gpg --list-signatures
# 签名
$ gpg --fingerprint

GnuPG公钥安装_git

  • 进入修改模式
$ gpg --edit-key <userid>
# --expert 要在前面,否者无效
$ gpg --expert --edit-key <userid>
gpg> help
  • change actions
gpg> change-usage
  • 加密
gpg -e -r <pub key userid> -o <output path>
  • 解密
gpg <encrypt file>
gpg -d -o <output path> <encrypt file>

进阶操作 —— 基础配置

https://www.gnupg.org/documentation/manuals/gnupg/Configuration-Options.html

home

# 这里可以看到home目录
gpg --version 
# 临时修改home
gpg --homedir "~/test" --version
# 会话修改home
gpgconf

核心操作 —— 子密钥系统管理

GnuPG公钥安装_github_02

todo

实战 —— 与Git结合

$ git config --global gpg.program [PATH]
$ git config --local commit.gpgsign true
$ git config --local user.signingkey "[GPG_KEY]"