GPG 介绍
GNU Privacy Guard(GnuPG或GPG)是一个密码学软件,用于加密、签名通信内容及管理非对称密码学的密钥。 GnuPG是自由软件,遵循IETF订定的OpenPGP技术标准设计,并与PGP保持兼容。
使用非对称加密技术可以加密发送文件给某人而避免被第三方打开,同时通过数字签名技术能够检查文件是否遭到第三方篡改。
安装
基础操作
- 生成密钥对
gpg --gen-key
- 分发公钥:
gpg --export --armor mykeyID > gpgkey.pub.asc # mykeyID 部分可以用 name 或 mail 地址代替
注: - -armor 表示加内容转换成可见的 ASCII 码输出,否则是二进制不可见内容。 现在你可以把导出的公钥通过 Email 等途径发送出去,或者你也可以不导出公钥直接上传公钥到密钥服务器。
gpg --keyserver keyserverAddress --send mykeyID
注: –keyserver 可以不加,默认为 keys.gnupg.net 然后只要把公钥 ID 和服务器地址告诉给别人就可以了,别人可以通过搜索你的 公钥 ID ,Email 地址或名字来获取并导入你的公钥,如下:
gpg --keyserver keyserverAddress --search-keys keyid/name/Email
比如搜索我的:
gpg --keyserver keyserver.ubuntu.com --search-keys rikulu
- 导入公钥
当你获得公钥文件后,你首先需要导入公钥到公钥库
gpg --import gpgkey.pub.asc
或直接从公钥服务器导入
gpg --keyserver keyserverAddress --recv-keys pubkeyID
私钥备份与密钥回收
- 密钥的导出和导入:以便用来备份密钥或导入到其它机器上。 导出
gpg -oa seckey.asc --export-secret-keys mykeyID
导入
gpg --import seckey.asc
- 密钥回收:当您的密钥对生成之后,您应该立即做一个公钥回收证书,如果您忘记了您的私钥的口令或者您的私钥丢失或者被盗窃,您可以发布这个证书来声明以前的公钥不再有效。 生成回收证书
gpg --output revoke.asc --gen-revoke mykeyID
导入回收证书
gpg --import revoke.asc
发送回收证书到服务器,声明原 GPG Key 作废
gpg --keyserver keyserverAddress --send mykeyID
列出机器中保存的所有密钥
列出所有公钥
gpg -k
列出所有私钥
gpg -K
常规使用
- 非对称文件加密与解密:
加密:当你导入完好友的公钥后,就可以用别人的公钥加密文件了,
gpg -e -r username filename (-r 表示指定用户)
解密:上面的操作会生成 filename.gpg 加密文件,之后你可以把此文件发送给好友了,对方就可以用自已的密钥来解密文件了。
gpg -d filename.gpg
- 对称加密与解密: 有时候没有得到对方的公钥,而且资料不是太重要,此时还可以使用简单的对称加密方式(加密及解密都使用相同的密钥/密码),加密过程中提示输出对称密钥/密码,注意:此密码是临时用的密码,不要设置和自己的私钥保护密码一样,以防别人猜测及盗用!
加密
gpg --symmetric filename
解密
gpg -d filename.gpg
- 对文件签名
数字签名
gpg -o doc.sig -s doc
其中doc是原文件,doc.sig包含了原文件和签名,是二进制的。这个命令会要求你输入你的私钥的密码句。
gpg -o doc.sig -ser name doc 既签名又加密
文本签名
gpg -o doc.sig --clearsign doc
这样产生的doc.sig同样包含原文件和签名,其中签名是文本的,而原文件不变。 分离式签名
gpg -o doc.sig -ab doc
doc.sig仅包括签名,分离式签名的意思是原文件和签名是分开的。 b 表示分离式签名detach-sign 验证签名
gpg --verify doc.sig [doc]
参考: