Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2966|回复: 2
打印 上一主题 下一主题

PGP实现邮件加密和数字签名

[复制链接]

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
跳转到指定楼层
楼主
发表于 2016-2-19 21:03:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数字签名和邮件加解密
过程简述:自己通过软件firemail生成对应邮件账号的公钥和私钥,把公钥发给有来往业务的联系人,此联系人用你的公钥加密邮件发送给你(使用firemail客户端完成),你用自己的私钥查看该邮件(使用firemail客户端完成)。
-----原理----
1.数字签名
保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名是个加密的过程,数字签名验证是个解密的过程。

2.消息加解密
public-key cryptographic system系统中,每个参考者有两个密钥(key): a public encryption key(加密公钥) and a private decryption key(解密私钥).
当某人要发邮件给你,他会根据你的公开密钥生成加密算法,加密消息,你收到消息后,必须用自己的私有密钥解密。

Note: Never share your private key with anyone.

----实现方案-----
1.协议
加密邮件的协议叫 PGP (Pretty Good Privacy ).  
可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。

2.firemail中的使用方法
a.安装软件GnuPG(GNU Privacy Guard)[实现PGP协议的自由软件]  以gpg4win-2.3.0.exe版本为例   或从网盘下载:
链接:http://pan.baidu.com/s/1nuchQbf 密码:1z8x
将所有选项都勾选一下,如下图:
默认安装路径即可,如:  C:\Program Files\GNU\GnuPG

b. firemail版本要求 1.1.0
实现原理:
firemail调用GPG提供的接口,建立在公共密钥基础之上。即每个人都要生成自己的密钥对,第一个为私有密钥,不对外公开,第二个为公共密钥。用你的公钥加密的邮件只能用你的私钥才能查看。
并可以让你附加数字签名,只有拥有你公钥的人才能验证此邮件是你本人发的,且中途没有被篡改。
操作方法:
1.先创建属于自己的密钥对(如:针对  firmail.wang@qq.com 创建示例密钥对)
安全-->密钥管理-->创建-->新密钥对
点击 “生成密钥”
生成完成 后,建议创建一个用于使密钥失效的证书,如下图:
选中相关位置进行保存即可。
如:firemail.wang@qq.com (0x535B79A3) rev.asc
输入证书的密码,如下图:

完成后,在密钥管理中输入关键字就可以查询相关的密钥了,如下图:
导出我们的公钥,给对方(即需要发送加密邮件给我们的人)。
从上图中选中要导出的密钥,右键导出密钥到文件:
这里选择只导出公钥。
如:XXX (firemail.wang示例密钥)XXXXpub.asc   并把这个文件发给对方。
特别提醒:如果自己的账号换了一台电脑查看邮件,则必须选择第二项进行导出(含有自己的私钥),才能查看别人用自己公钥加密过的邮件。



-----------------------对密钥的使用--------
前提:先导入对方发过来的公钥文件,如:XXXXXX pub.asc
导入方法,如下图:

1.写信时使用上面导入的公钥进行邮件加密,如下图:

警告先不用管,直接确定就行。

2.收到加密邮件的读取
[注:读取pgp邮件,一般会要求输入对gpg的认证,如下图]
输入正确后,就能正常读取邮件了。


上面是以加密邮件为示例,那当然也可以选只签名不加密,也可以即签名又加密,查看相关邮件效果如下:

也可非会话模式下查看 : 系统菜单   “查看”-->"会话视图"  前面的钩去掉。



发送带附件的邮件时,可进行如下选择:

回复

使用道具 举报

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
沙发
 楼主| 发表于 2016-2-19 21:04:22 | 只看该作者
本帖最后由 hechengjin 于 2016-2-19 21:06 编辑

ECDH
简介
[size=1em]编辑

ECDH是基于ECC(Elliptic Curve Cryptosystems,椭圆曲线密码体制,参看ECC)的DH( Diffie-Hellman)密钥交换算法。交换双方可以在不共享任何秘密的情况下协商出一个密钥。

ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点P,一个整数k,求解Q=kP很容易;给定一个点P、Q,知道Q=kP,求整数k确是一个难题。ECDH即建立在此数学难题之上。




密钥交换过程

假设密钥交换双方为AliceBob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。

1.Alice生成随机整数a,计算A=a*G。Bob生成随机整数b,计算B=b*G。

2.Alice将A传递给Bob。A的传递可以公开,即攻击者可以获取A。由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。Bob将B传递给Alice。同理,B的传递可以公开。

3.Bob收到Alice传递的A,计算Q=b*A

4.Alice收到Bob传递的B,计算Q‘=a*B

Alice、Bob双方即得Q=b*A=b*(a*G)=(b*a)*G=(a*b)*G=a*(b*G)=a*B=Q' (交换律和结合律),即双方得到一致的密钥Q。





用途

由于通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,因此,ECDH广泛用于协议之中,通过ECDH得到对称加密密钥。如TLS中的*_ECDH_*密码套件。

使用DH算法的协议,都可以升级到ECDH算法。ECDH具有ECC的高强度、短密钥长度、计算速度快等优点。





使用中注意事项

单独使用ECDH,和单独使用DH一样,会遭受中间人攻击,因此,ECDH需要配合签名算法使用。常常将ECDH和ECDSA一起使用,如TLS中的*_ECDH_ECDSA_*密码套件。




回复 支持 反对

使用道具 举报

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
板凳
 楼主| 发表于 2016-2-19 21:05:12 | 只看该作者
伤不起的算法-ECC-ECDSA


ECDSA
ECDSA算法用于数字签名,是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。
       签名过程如下:
   1、选择一条椭圆曲线Ep(a,b),和基点G;
   2、选择私有密钥k(k<n,n为G的阶),利用基点G计算公开密钥K=kG;
   3、产生一个随机整数r(r<n),计算点R=rG;
   4、将原数据和点R的坐标值x,y作为参数,计算SHA1做为hash,即Hash=SHA1(原数据,x,y);
   5、计算s≡r - Hash * k (mod n)
   6、r和s做为签名值,如果r和s其中一个为0,重新从第3步开始执行
验证过程如下:
   1、接受方在收到消息(m)和签名值(r,s)后,进行以下运算
   2、计算:sG+H(m)P=(x1,y1), r1≡ x1 mod p。
   3、验证等式:r1 ≡ r mod p。
4、如果等式成立,接受签名,否则签名无效。
证明公式:
签名体制的正确性证明: 签名体制的正确性证明:
sG+H(m)P
=(k-H(m)nA)G+H(m)P
=kG-H(m)nAG+H(m)P
=kG-H(m)P+H(m)P
=kG
所以,r1≡r mod p。
R=kG;P=nAG; s=k-H(m)*nA mod p
简单的例子:
签名过程:
选取随机数k = 3,假设h(m) = 4 ,则计算(x,y) = kG = 3 (x,y) = kG = 3(0,2)=(11,9),r = x mod n = 11 mod 23 = 11,s=k-H(m)×nA mod p = 3 –4×9 mod 23 = 13。因此对m的签名为(11 13)。
验证过程:
签名接收者B得到签名后计算:sG+H(m)P= 13G + 4P = (11,9),r1 = x1
mod n = 11 mod 29 = 11 = r。因此B接受签名。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-4-19 21:15 , Processed in 0.060814 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表