gpg学习

GnuPG是一款采用非对称加密(PGP)的免费软件。传统加密方式是用于加密的密钥也用于解密, 这种方式不适用于在不方便告诉别人密码的场合, 比如卧底或者情报人员传递情报的时候, 再比如内容供应商不可能在某部文件只用一种密码。

基本思路是:

生成公钥, 私钥,

公钥给加密的人, 私钥给接受文件解密的人, 密钥生成者生成两个密钥,公钥发布出去,私钥给文件接受者(包括本人), 文件发送者持公钥加密文件(可以很多人使用同一公钥!),然后传送, 接受者持私钥解密文件。

 

 

gpg -gen-key生成两个密钥, 生成key密钥标识

 

回收密钥:

gpg -output revoke.asc -gen-revoke key生成密钥回收整数,key是密钥标识

gpg --import revoke.asc: 导入回收文件

gpg -keyserver server_addr -send-keys key:发送回收证书到服务器

 

gpg -keyserver server_addr -send-keys key:上传密钥

gpg -o outfile -export key: 备份指定key的公钥, 没有指定key, 则是所有。

gpg -o outfile -export-secret-keys key: 备份私钥,未指定key的话, 所有

gpg -import inputfileL 导入密钥

 

gpg -e file: 加密文件, 加-r可指定用户

gpg -d file.gpg:解密文件,

都可加-o指定输出文件名

 

数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。

简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。

这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。

基于公钥密码体制和私钥密码体制都可以获得数字签名,目前主要是基于公钥密码体制的数字签名。

 

包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS)。

 

数字签名的应用过程是,数据源发送方使用自己的私钥对数据校验和或其他与数据内容有关的变量进行加密处理,完成对数据的合法“签名”,数据接收方则利用对方的公钥来解读收到的“数字签名”,并将解读结果用于对数据完整性的检验,以确认签名的合法性。数字签名技术是在网络系统虚拟环境中确认身份的重要技术,完全可以代替现实过程中的“亲笔签字”,在技术和法律上有保证。在数字签名应用中,发送者的公钥(能用此公钥解的,说明是此人确认的东西, 也说明文件是完整的(除非发送者搞错))可以很方便地得到,但他的私钥则需要严格保密(防止伪造)。

 

由此gpg用于签名,需要使用私钥生成签名, 发布出去后, 用公钥验证。

 

具有数字签名功能的 个人安全邮件证书中包含证书持有人的电子邮件地址、证书持有人的公钥、颁发者(CA)以及颁发者对该证书的签名。个人安全邮件证书功能的实现决定于用户使用的邮件系统是否支持相应功能。目前, MS Outlook 、Outlook Express、Foxmail及CA安全电子邮件系统均支持相应功能。使用个人安全邮件证书可以收发加密和数字签名邮件,保证电子邮件传输中的机密性、完整性和不可否认性,确保电子邮件通信各方身份的真实性。

当然这个签名的文件是可能被串改的,这个签名是无效的, 可用sigcheck.exe检查。返回signed: 有效, 返回unsigned:无效

 

 

gpg -o doc.sig -s doc:对doc进行签名, 生成doc.sig(包含源文件和签名), 需输入私钥。 用-ser的话, 也加密。 这里doc是二进制的。

gpg -o doc.sig -clearsign doc: 文本签名

gpg -o doc.sig -ab doc:源文件和签名分开, -a: 输出经ascii封装

gpg -verify doc.sig [doc]: 验证签名, 要输入公钥, 如果是分离式的, 要输入后面的doc。

 

 

公钥有可能是别人已某人的名义发布的(实际上不是某人发的),这就存在上当的可能,

gpg对此使用了指纹采样方式, 当接受到某人的公钥, 用命令:

gpg -fingerprint xyz@abc(密钥发布者的信息)..... 生成指纹信息

然后向发布者了解发布者是否发布了该密钥, 他的公钥的指纹信息是什么。

确认后, 可以认为这个公钥是合法的。接下来, 再对密钥进行签名, 以表示这个密钥是可信的:

gpg -sign-key xyz@abc .....

还可用gpg -edit-key xyz@abc ...来设置trust level, 如果是do't trust, 要求密钥发布者的签名

 

删除私钥:

gpg -delete-secret-keys xyz@abc

删除公钥:

gpg -delete-keys xyz@abc

先私后公

 

gpg -o doc.gpg -c doc: 对doc用对称加密方式加密, 就是设定密码方式。

 

 

上面的命令有些需要加双划线 

 

一个链接:

 http://wenku.baidu.com/view/e527ee2ce2bd960590c677c8.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值