论文部分内容阅读
摘 要 本文从电子邮件传输过程的安全角度出发,分析了目前广泛应用的安全电子邮件产品存在的不足,提出了一种采用椭圆曲线来实现密钥交换、数字签名、加/解密的方案,从而进一步增强了电子邮件的机密性、完整性和不可否认性。
关键词 电子邮件;椭圆曲线;机密性;完整性;不可否认性
中图分类号:TP393 文献标识码:A 文章编号:1671—7597(2013)041-080-02
1 概述
互联网的普及促进了电子邮件的广泛应用,而电子邮件采用SMTP和POP3协议进行发送和接收,由于这两个协议不提供加密服务,所以在没有采用任何保护措施的情况下邮件是以明文进行传输。为了防止电子邮件在互联网传输过程中不被篡改、泄漏,也出现了很多安全电子邮件产品,但是随着计算机的计算能力和黑客技术水平的不断提高,这些产品也需要不断完善和更新。本文提出了一种基于椭圆曲线来提供电子邮件内容的安全性、完整性以及身份的不可否认性服务的方案。
2 相关研究
目前的大多安全电子邮件产品都是以PGP和S/MIME为框架。
PGP是一个完整的电子邮件安全软件包,它并没有引入新技术,而只是将RSA、MD5、IDEA等算法来进行“先签名后加密”的结构进行组合,提供加密、鉴别、数字签名等服务,由此可见,其安全性完全取决于所采用算法的安全强度,这使得PGP侧重于个人使用。
S/MIME与PGP功能类似,都是对电子邮件提供加密和鉴别服务,不同之处在于S/MIME增加了认证机构提供了不可否认性,其安全性要比PGP强,S/MIME倾向于商业和团体使用的工业标准。但由于整个信任关系是树状结构,最上级证书具有很高权限,它能够获得用户电子邮件的信息,这也给电子邮件的安全带来了隐患。
PGP和S/MIME都是以RSA公钥算法为基础,RSA算法的安全性取决于大素数的因式分解。密钥的产生和加/解密过程的计算都非常复杂,但是增强其安全性的方法是需要增大密钥空间,这无疑给本来计算缓慢的RSA雪上加霜。因此,为了解决RSA算法在速度和安全性方面不能兼顾的问题,本方案采用椭圆曲线实现密钥的产生、数字签名、加/解密。
weierstrass方程y2+a1xy+a3y=x3+a2x2+a4x+a6所确定的平面曲线E和一个叫做无穷远点的特殊点O的集合。在椭圆曲线密码体制中,采用了定义在有限域上的椭圆曲线,其方程为:y2=x3+ax+b(mod n),其中判别式4a3+27b2(mod n)≠0,x、y、a、b∈Fn,这里n是素数,a和b为两个小于n的非负整数。由此满足此方程的点(x,y)和一个无穷远点O就组成了椭圆曲线E。
椭圆曲线的安全性取决于有限域上的离散对数问题的难解性。椭圆曲线的离散对数问题是:已知素数n和椭圆曲线E,计算方程Q=kP,在已知k和P的情况下计算Q比较容易,但由根据Q和P计算k是非常困难的。
3 算法设计
3.1 密钥交换
采用椭圆曲线来实现Diffie-Hellman密钥交换,已知椭圆曲线Eq(a,b)和基点G,用户A和用户B之间完成密钥交换过程描述如下:
1)A选择一个小于n的整数nA作为A的私钥,计算公钥PA=nA×G;且PA∈Eq(a,b)。
2)B也同样选择一个小于n的整数nB作为B的私钥,并计算公钥PB=nB×G,且PB∈Eq(a,b)。
3)A产生的秘密钥KA=nA×PB,B产生秘密钥KB= nB×PA,容易得出:KA=KB=K,将其作为对称密钥。
3.2 数字签名与验证
采用椭圆曲线来实现DSA数字签名,可以防止发信人抵赖和信件在传输中途被篡改。其工作原理是使用私钥进行签名,公钥进行验证。发送方A首先对电子邮件信息m进行Hash运算得到数字摘要后再用A的私钥对摘要进行加密,形成数字签名,然后将m和加密后的摘要一起发送给接受方。接受方B将收到的签名通过A的公钥对摘要进行解密后得到摘要1,另外将收到的m通过Hash运算产生摘要2,判断两个摘要是否相等,相等则表示签名成功,否则签名失败。具体的签名和验证过程描述如下:
签名过程:
1)A对电子邮件信息m,采用SHA-1计算e=H(m)。
2)选择一个伪随机数k∈[1,n-1],计算kP=(x1,y1)。
3)计算r=x1 mod n,若r=0,返回第(1)步。
4)计算s=k-1(e+dr)mod n,若s=0,返回第(1)步。
5)生成数字签名(r,s),并发送数字签名和电子邮件m。
验证过程:
1)验证者B方收到数字签名(r,s)和电子邮件m,对m生成摘要e=H(m)。
2)计算(x1,y1)=s-1eP+s-1rQ(mod n),如果x1=r,验证签名成功,否则签名无效。
3.3 椭圆曲线加/解密
像密钥交换系统一样,加/解密知道椭圆曲线Eq(a,b)和基点G。若A要将消息Pm加密后发送给B,其具体的通信过程描述如下:
1)A的私钥nA,公钥PA=nA×G;B的私钥nB,公钥PB=nB×G。
2)A随机选择一个正整数k,产生密文Cm={kG,Pm+kPB},(该密文是一个点对)。
3)B收到密文Cm后,计算Pm+kPB-nB(kG)=Pm+k(nBG)-nB(kG)=Pm(对密文的第二点减去第一个点与B的私钥之积得到消息原文)。
A通过将Pm+kPB来伪装消息Pm,因为只有A知道k,所以除A外的任何人均不能除去偽装kPB;但是,A也在伪装后的消息中包含PB,使得已知私钥nB的B可以除去伪装得到消息明文。而攻击者要想得到消息明文的前提是从G和kG求出k,但这几乎是不可行的。
关键词 电子邮件;椭圆曲线;机密性;完整性;不可否认性
中图分类号:TP393 文献标识码:A 文章编号:1671—7597(2013)041-080-02
1 概述
互联网的普及促进了电子邮件的广泛应用,而电子邮件采用SMTP和POP3协议进行发送和接收,由于这两个协议不提供加密服务,所以在没有采用任何保护措施的情况下邮件是以明文进行传输。为了防止电子邮件在互联网传输过程中不被篡改、泄漏,也出现了很多安全电子邮件产品,但是随着计算机的计算能力和黑客技术水平的不断提高,这些产品也需要不断完善和更新。本文提出了一种基于椭圆曲线来提供电子邮件内容的安全性、完整性以及身份的不可否认性服务的方案。
2 相关研究
目前的大多安全电子邮件产品都是以PGP和S/MIME为框架。
PGP是一个完整的电子邮件安全软件包,它并没有引入新技术,而只是将RSA、MD5、IDEA等算法来进行“先签名后加密”的结构进行组合,提供加密、鉴别、数字签名等服务,由此可见,其安全性完全取决于所采用算法的安全强度,这使得PGP侧重于个人使用。
S/MIME与PGP功能类似,都是对电子邮件提供加密和鉴别服务,不同之处在于S/MIME增加了认证机构提供了不可否认性,其安全性要比PGP强,S/MIME倾向于商业和团体使用的工业标准。但由于整个信任关系是树状结构,最上级证书具有很高权限,它能够获得用户电子邮件的信息,这也给电子邮件的安全带来了隐患。
PGP和S/MIME都是以RSA公钥算法为基础,RSA算法的安全性取决于大素数的因式分解。密钥的产生和加/解密过程的计算都非常复杂,但是增强其安全性的方法是需要增大密钥空间,这无疑给本来计算缓慢的RSA雪上加霜。因此,为了解决RSA算法在速度和安全性方面不能兼顾的问题,本方案采用椭圆曲线实现密钥的产生、数字签名、加/解密。
weierstrass方程y2+a1xy+a3y=x3+a2x2+a4x+a6所确定的平面曲线E和一个叫做无穷远点的特殊点O的集合。在椭圆曲线密码体制中,采用了定义在有限域上的椭圆曲线,其方程为:y2=x3+ax+b(mod n),其中判别式4a3+27b2(mod n)≠0,x、y、a、b∈Fn,这里n是素数,a和b为两个小于n的非负整数。由此满足此方程的点(x,y)和一个无穷远点O就组成了椭圆曲线E。
椭圆曲线的安全性取决于有限域上的离散对数问题的难解性。椭圆曲线的离散对数问题是:已知素数n和椭圆曲线E,计算方程Q=kP,在已知k和P的情况下计算Q比较容易,但由根据Q和P计算k是非常困难的。
3 算法设计
3.1 密钥交换
采用椭圆曲线来实现Diffie-Hellman密钥交换,已知椭圆曲线Eq(a,b)和基点G,用户A和用户B之间完成密钥交换过程描述如下:
1)A选择一个小于n的整数nA作为A的私钥,计算公钥PA=nA×G;且PA∈Eq(a,b)。
2)B也同样选择一个小于n的整数nB作为B的私钥,并计算公钥PB=nB×G,且PB∈Eq(a,b)。
3)A产生的秘密钥KA=nA×PB,B产生秘密钥KB= nB×PA,容易得出:KA=KB=K,将其作为对称密钥。
3.2 数字签名与验证
采用椭圆曲线来实现DSA数字签名,可以防止发信人抵赖和信件在传输中途被篡改。其工作原理是使用私钥进行签名,公钥进行验证。发送方A首先对电子邮件信息m进行Hash运算得到数字摘要后再用A的私钥对摘要进行加密,形成数字签名,然后将m和加密后的摘要一起发送给接受方。接受方B将收到的签名通过A的公钥对摘要进行解密后得到摘要1,另外将收到的m通过Hash运算产生摘要2,判断两个摘要是否相等,相等则表示签名成功,否则签名失败。具体的签名和验证过程描述如下:
签名过程:
1)A对电子邮件信息m,采用SHA-1计算e=H(m)。
2)选择一个伪随机数k∈[1,n-1],计算kP=(x1,y1)。
3)计算r=x1 mod n,若r=0,返回第(1)步。
4)计算s=k-1(e+dr)mod n,若s=0,返回第(1)步。
5)生成数字签名(r,s),并发送数字签名和电子邮件m。
验证过程:
1)验证者B方收到数字签名(r,s)和电子邮件m,对m生成摘要e=H(m)。
2)计算(x1,y1)=s-1eP+s-1rQ(mod n),如果x1=r,验证签名成功,否则签名无效。
3.3 椭圆曲线加/解密
像密钥交换系统一样,加/解密知道椭圆曲线Eq(a,b)和基点G。若A要将消息Pm加密后发送给B,其具体的通信过程描述如下:
1)A的私钥nA,公钥PA=nA×G;B的私钥nB,公钥PB=nB×G。
2)A随机选择一个正整数k,产生密文Cm={kG,Pm+kPB},(该密文是一个点对)。
3)B收到密文Cm后,计算Pm+kPB-nB(kG)=Pm+k(nBG)-nB(kG)=Pm(对密文的第二点减去第一个点与B的私钥之积得到消息原文)。
A通过将Pm+kPB来伪装消息Pm,因为只有A知道k,所以除A外的任何人均不能除去偽装kPB;但是,A也在伪装后的消息中包含PB,使得已知私钥nB的B可以除去伪装得到消息明文。而攻击者要想得到消息明文的前提是从G和kG求出k,但这几乎是不可行的。