数据加密和数字签名 浅谈数字签名技术及数据加密系统设计

时间:2019-08-19 05:05:13 来源:QQ空间素材网 本文已影响 QQ空间素材网

  摘要:当今社会网络无处不在,网络安全问题同样无处不在!随着计算机网络应用的快速发展,信息安全和保密问题越来越重要,而密码学是信息安全的重中之重。在密码学中,数字签名技术以其在保证数据的完整性、私有性和不可抵赖性方面占据了相当的地位。本文介绍了基于RSA算法的数字签名技术,并设计了一个单向传递数据的数据加密系统。
  关键词:网络安全;数字签名;RSA数据加密
  中图分类号:TP39 文献标识码:A
  1.概述
  我们在日常生活中经常会需要签名,比如我们刷卡购物时,这是为了防止我们对自己行为否认的一种手段。在网络中,数字签名就是同样的一种存在。而数据加密技术不仅能对数据进行加解密,还能够实现数字签名、认证和鉴别等多种功能,从而保障了在网络上传输数据的机密性、完整性和确认性。本文介绍了数字签名及其实现,并使用ElGamal算法,设计了一个数据加密系统。
  2.RSA数字签名算法
  RSA数字签名算法是Diffie和Hellman提出数字签名思想后的第一个数字签名算法,是由Rivest、Shamir和Adleman三人共同完成的,该算法源于RSA公钥密码算法思想,是迄今为止应用最为广泛的数字签名算法[1]。
  2.1数字签名
  数字签名是指附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换能使数据单元的接收者确认数据单元的来源和数据的完整性,并保护数据,防止被人进行伪造[2]。数字签名针对以数字形式存储的消息进行处理,产生一种带有操作者身份信息的编码。执行数字签名的实体称为签名者,签名过程中所使用的算法为签名算法,本文中我们使用RSA算法,操作中生成的编码为签名者对该消息的数字签名。
  数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。 数字签名算法包含签名和验证两项操作,遵循“私钥签名,公钥验证”的签名/验证方式。通过数字签名能够实现对原始信息的鉴别和不可抵赖性。
  数字签名验证流程:
  图2-1 数字签名验证流程
  2.2非对称密钥加密体制
  非对称密钥加密体制又称公钥加密体制。该体制的特性是,从公钥推导出私钥几乎不可能,用公钥密钥对明文进行加密,只能用私钥密钥对其进行解密。公开密钥都是在某些数学上的难解的问题上发展而来的。公开密钥加密体制的优点有:加密密钥是公开的,用户之间不需要传递私钥;能够很容易地实现数字签名,保证交易过程的机密性、身份确认性、数据完整性和不可否认性,因此最适合电子商务的应用需要由于公钥加密系统是基于尖端的数学难题,它的缺点就是计算复杂,实现速度远远赶不上对称加密系统。根据所基于的数学难题来分类,有整数因子分解系统(代表性的有RSA)、离散对数系统(代表性的有DSA)、椭圆曲线离散对数系统(ECC)。
  2.3RSA算法
  RSA算法设计思想:RSA公钥密码体制到目前为止还是一种认可为安全的体制. RSA算法和用RSA算法实现数字签名的理论,以及它们在实际应用中的实现。
  RSA算法是一种非对称密码算法,该算法需要一对密钥,公钥和私钥,如果使用其中一个加密,则需要用另一个才能解密。
  RSA的算法涉及三个参数,n、e、d。
  其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
  e和d是一对相关的值,e可以任意取,但要求与(p-1)*(q-1)互质;再选择d,要求(e*d)mod((p-1)*(q-1))=1。
  RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B ^ e mod n;B=A^ d mod n;e和d可以互换使用。
  3.数据加密系统的设计
  3.1数据加密模块
  数据加密模块使用常用非对称加密算法――ElGamal加密算法。非对称加密算法的主要优点是可以适应开放性的使用环境,密钥管理相对简单。ElGamal算法是一个单向的过程,这里只有“公钥加密、私钥解密”这个过程,若a向b发送数据,只有a向b发送数据是安全的,b向a发送则不安全。
  由于Java6并没有提供ElGamal算法实现,要在Java中实现该算法必须配置开源组件包BouncyCastle,在实例化各种操作引擎前需导入BouncyCastle提供者,如:
  import java.security.Security;
  import org.bouncycastle.jce.provider.BouncyCastlePovider;
  并加入BouncyCastleProvider支持
  Security.addProvider(new BouncyCastleProvider());
  ElGamal算法实现模型分析:
  以甲方向乙方发送数据为模型
  (1)乙方构造密钥对(公钥+私钥),公布公钥给甲方。
  (2)甲方将要发送的数据用公钥进行加密,并将加密后数据发送给乙方。
  (3)乙方用私钥对接收到的数据进行解密,得到原文。
  因为公钥是通过非安全途径发布的,其私钥加密的数据安全意义不大。
  加密模块流程
  图3-1 加密模块流程
  3.2数字签名模块
  数据签名算法采用RSA数据签名算法,但由于RSA数字签名算法存在着因计算方法本身同构造成签名易被伪造和计算时间长的弱点,因此实际对文件签名前,需要对消息做MD5变换。MD5函数是一种单向散列函数,它将任意长度的消息压缩成128位的消息摘要。应用MD5的单向性和抗碰撞性,可以实现信息的完整性检验。
  数字签名实现流程:
  图3-2 数字签名实现流程
  结论
  数字签名技术是信息安全领域的一项重要技术,是实现信息安全传输的重要手段之一,可以确保数据的可靠性、保密性、完整性和不可否认性。本文介绍了数字签名技术,并综合数字签名技术及数据加密技术设计了单向的数据加密系统,该系统简单,安全性高,并保证了数据的完整性、不可否认性等。
  参考文献
  [1]梁栋.Java加密与解密的艺术[M].北京:机械工业出版社,2010.
  [2]白娟,周林.数字签名技术及在Java中的一种实现[M].微计算机信息.2004年第20卷第8期.
  [3]孟艳红,王育欣,倪天予.数据加密系统的设计与实现[J]. 沈阳工业大学学报. 2007年6月第29卷第3期.
  [4]潘瑜.计算机网络安全技术[M].北京:科学出版社,2007.
  

网站地图 | 关于我们 | 联系我们 | 广告服务 | 免责声明 | 在线留言 | 友情链接 | RSS 订阅 | 热门搜索
版权所有 QQ空间素材网 www.qzoneai.com