【原理】
加密:公钥加密,私钥解密[数据保密性]
数字签名:私钥加密,公钥解密[身份认证][数据完整性][不可抵赖性]
【生成gpg密钥】
gpg --gen-keygpg (GnuPG) 1.4.14; Copyright (C) 2013 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. gpg: 钥匙环‘/root/.gnupg/secring.gpg’已建立 请选择您要使用的密钥种类: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (仅用于签名) (4) RSA (仅用于签名)您的选择? 2DSA 密钥长度应在 1024 位与 3072 位之间。 您想要用多大的密钥尺寸?(2048) 您所要求的密钥尺寸是 2048 位 请设定这把密钥的有效期限。 0 = 密钥永不过期 = 密钥在 n 天后过期 w = 密钥在 n 周后过期 m = 密钥在 n 月后过期 y = 密钥在 n 年后过期 密钥的有效期限是?(0) 密钥永远不会过期 以上正确吗?(y/n) Y 您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合 成用户标识,如下所示: “Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>” 真实姓名: Che Caide 电子邮件地址: checaide@outlook.com 注释: Personal Digital Signatures 您选定了这个用户标识: “Che Caide (Personal Digital Signatures) <checaide@outlook.com>” 更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o 您需要一个密码来保护您的私钥。 我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。 gpg: WARNING: some OpenPGP programs can not handle a DSA key with this digest size.++++++++++..+++++..++++++++++.++++++++++.+++++.++++++++++.+++ ++.+++++.++++++++++.+++++..++++++++++++++++++++..+++++++++++ +++++++++.+++++++++++++++..+++++>+++++>+++++............................. ...<.+++++>..+++++....................>+++++....................<.+++++<+++++.+++++ 随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵! (还需要39字节) 我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。 .+++++..++++++++++++++++++++++++++++++.++++++++++++++++++++. +++++.++++++++++.+++++.+++++.+++++....+++++...+++++..++++++++ ++...+++++.+++++++++++++++..+++++...+++++++++++++++>.+++++++ +++>.+++++>.+++++..........................+++++^^^ gpg: 密钥 68399613 被标记为绝对信任 公钥和私钥已经生成并经签名。 gpg: 正在检查信任度数据库 gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型 gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u pub 2048D/68399613 2013-10-11 密钥指纹 = 7653 FFC9 B461 FFF2 F965 D9B4 CB4F 7150 6839 9613uid Che Caide (Personal Digital Signatures) <checaide@outlook.com>sub 2048g/5D9FF622 2013-10-11 |
【查看密钥】
gpg --list-keysroot/.gnupg/pubring.gpg------------------------pub 2048D/68399613 2013-10-11uid Che Caide (Personal Digital Signatures) <checaide@outlook.com>sub 2048g/5D9FF622 2013-10-11 gpg --fingerprint/root/.gnupg/pubring.gpg------------------------pub 2048D/68399613 2013-10-11 密钥指纹 = 7653 FFC9 B461 FFF2 F965 D9B4 CB4F 7150 6839 9613uid Che Caide (Personal Digital Signatures) <checaide@outlook.com>sub 2048g/5D9FF622 2013-10-11 gpg --list-public-keysgpg --list-secret-keys |
【修改密钥】
gpg --edit-key Che Caide gpg (GnuPG) 1.4.14; Copyright (C) 2013 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. 私钥可用。 pub 2048D/68399613 创建于:2013-10-11 有效至:永不过期 可用于:SC 信任度:绝对 有效性:绝对 sub 2048g/5D9FF622 创建于:2013-10-11 有效至:永不过期 可用于:E 绝对 (1). Che Caide (Personal Digital Signatures) <checaide@outlook.com> 无效的指令(尝试“help”) gpg> helpquit 离开这个菜单 save 保存并离开help 显示这份在线说明 fpr 显示密钥指纹 list 列出密钥和用户标识 uid 选择用户标识 N key 选择子钥 N check 检查签名 sign 为所选用户标识添加签名[* 参见下面的相关命令]lsign 为所选用户标识添加本地签名 tsign 为所选用户标识添加信任签名 nrsign 为所选用户标识添加不可吊销签名 adduid 增加一个用户标识 addphoto 增加一个照片标识 deluid 删除选定的用户标识 addkey 添加一个子钥 addcardkey 在智能卡上添加一把密钥 keytocard 将一把密钥移动到智能卡上 bkuptocard 将备份密钥转移到智能卡上 delkey 删除选定的子钥 addrevoker 增加一把吊销密钥 delsig 删除所选用户标识上的签名 expire 变更密钥或所选子钥的使用期限 primary 设定首选用户标识 toggle 在私钥和公钥清单间切换 pref 列出首选项(专家模式)showpref 列出首选项(详细模式)setpref 设定所选用户标识的首选项 keyserver 设定所选用户标识的首选公钥服务器的 URL notation 为所选用户标识的设定注记passwd 更改密码 trust 更改信任度 revsig 吊销所选用户标识上的签名 revuid 吊销一个用户标识 revkey 吊销密钥或选定的子钥enable 启用一把密钥 disable 禁用一把密钥 showphoto 显示照片标识 clean 压缩不可用的用户标识并删除不可用的签名 minimize 压缩不可用的用户标识并删除所有签名 * ‘sign’命令可以带‘l’前缀(lsign)以添加本地签名,或‘t’前缀(tsign)以添加 信任签名,或‘nr’前缀(nrsign)以添加不可吊销签名,或者以上三种前缀的任何组 合(ltsign、tnrsign 等)。 gpg> quit |
【导出密钥】
公钥
gpg --export --armor Che Caide > MY-PGP-PUBLIC-KEY.asc #导出为ASCII字符形式gpg --export Che Caide > MY-PGP-PUBLIC-KEY.gpg #导出为二进制形式 |
私钥
gpg --export-secret-key --armor Che Caide > MY-PGP-PRIVATE-KEY.asc #导出为ASCII字符形式gpg --export-secret-key Che Caide > MY-PGP-PRIVATE-KEY.gpg #导出为二进制形式 |
【导入密钥】
gpg --import 密钥文件 |
【加/解密】
公钥加密
gpg --encrypt --recipient "Che Caide" test.txt #欲加密文件 生成二进制形式 文件名test.txt.gpggpg --encrypt --armor --recipient "Che Caide" test.txt #欲加密文件 生成ASCII字符形式 文件名test.txt.asc |
私钥解密
gpg --decrypt test.txt.gpg > test.txt gpg --decrypt test.txt.asc > test.txt |
【签名/验证】
私钥签名
gpg --local-user "Che Caide" --sign --armor ok.txt #生成包含签名加密的文件gpg --detach-sign --armor ok.txt #生成独立的签名文件gpg --clearsign --armor ok.txt #生成包含明文内容和数字签名的文件 |
公钥验证
gpg --verify ok.txt.asc #只验证签名真实性gpg --decrypt ok.txt.asc > ok.txt #验证并还原信息 |
【gpg命令详解】
语法:gpg [选项] [文件名]
签名、检查、加密或解密
默认的操作依输入数据而定
指令:
-s, –sign [文件名] 生成一份签名
–clearsign [文件名] 生成一份明文签名
-b, –detach-sign 生成一份分离的签名
-e, –encrypt 加密数据
-c, –symmetric 仅使用对称加密
-d, –decrypt 解密数据(默认)
–verify 验证签名
–list-keys 列出密钥
–list-sigs 列出密钥和签名
–check-sigs 列出并检查密钥签名
–fingerprint 列出密钥和指纹
-K, –list-secret-keys 列出私钥
–gen-key 生成一副新的密钥对
–delete-keys 从公钥钥匙环里删除密钥
–delete-secret-keys 从私钥钥匙环里删除密钥
–sign-key 为某把密钥添加签名
–lsign-key 为某把密钥添加本地签名
–edit-key 编辑某把密钥或为其添加签名
–gen-revoke 生成一份吊销证书
–export 导出密钥
–send-keys 把密钥导出到某个公钥服务器上
–recv-keys 从公钥服务器上导入密钥
–search-keys 在公钥服务器上搜寻密钥
–refresh-keys 从公钥服务器更新所有的本地密钥
–import 导入/合并密钥
–card-status 打印智能卡状态
–card-edit 更改智能卡上的数据
–change-pin 更改智能卡的 PIN
–update-trustdb 更新信任度数据库
–print-md 算法 [文件]
使用指定的散列算法打印报文散列值
选项:
-a, –armor 输出经 ASCII 封装
-r, –recipient 某甲 为收件者“某甲”加密
-u, –local-user 使用这个用户标识来签名或解密
-z N 设定压缩等级为 N (0 表示不压缩)
–textmode 使用标准的文本模式
-o, –output 指定输出文件
-v, –verbose 详细模式
-n, –dry-run 不做任何改变
-i, –interactive 覆盖前先询问
–openpgp 行为严格遵循 OpenPGP 定义
–pgp2 生成与 PGP 2.x 兼容的报文
【rpm包签名】
# 修改/usr/lib/rpm/macros宏变量里面的签名变量。
sed -i "s/^#\%\_gpg\_name$/\%\_gpg\_name Che Caide (Personal Digital Signatures) \<checaide@outlook.com\>/" /usr/lib/rpm/macros sed -i "s/^#\%\_signature$/\%\_signature gpg/" /usr/lib/rpm/macros # 修改值如下%_signature gpg%_gpg_name Che Caide (Personal Digital Signatures) <checaide@outlook.com> # 用私钥重新签名.rpm包,&将公钥发布rpm --resign xxxx.rpm
转载于:https://blog.51cto.com/caidui/1675991