文章目录
- 基础概念
- 加密模式
- 加密算法
- 区别: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
- 改
- 进入修改模式
$ 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
核心操作 —— 子密钥系统管理
todo
实战 —— 与Git结合
$ git config --global gpg.program [PATH]
$ git config --local commit.gpgsign true
$ git config --local user.signingkey "[GPG_KEY]"