`

公钥加密和数字签名

阅读更多

       20世纪70年代,一个数学上的突破震惊了世界密码学家和谍报人员,这就是公开密钥加密 (PKE)技术。与传统的加密方法不同,它使用两把钥匙:一把公开钥匙和一把秘密钥匙,前者用于加密,后者用于解密。它也称为“非对称式”加密方法。公开密钥加密技术解决了传统加密方法的根本性问题,极大简化了钥匙分发过程。它着与传统加密方法相结合,可以进一步增强传统加密方法的可靠性。此外,还可能利用公开密钥加密技术来进行数字签字。
(1) 什么是公开密钥加密系统
        使用公开密钥加密系统时,收信人首先生成在数学上相关联、但又不相同的两把钥匙,一把公开钥匙用于加密,另一把秘密钥匙用于解密,这一过程称为密钥配制。收信人将唯一的一把秘密钥匙自己掌握和保存起来,把公开钥匙通过各种方式公布出去,让想与收信人通信的人都能够得到。这个过程称为公开密钥的分发。
        发信人使用收信人的公开密钥对通信文件进行加密。加密后的密文发信人再也无法解开。收信人在收到密文以后,用自己的秘密钥匙解开密文获得信息。由于公开密钥和秘密钥匙是一对一地相匹配,唯一的一把秘密钥匙掌握在收信人手里,除他之外,可以确信无人能够获取通信内容。

(2) 公开密钥加密系统的优点
       应用于保密通信方面,公开密钥加密系统比传统加密系统有明显优越之处。
       首先,用户可以把用于加密的钥匙,公开地分发给任何人。谁都可以用这把公开的加密钥匙与用户进行秘密通信。除了持有解密钥匙的收件人外,无人能够解开密文。这样,传统加密方法中令人头痛的密钥分发问题就转变为一个性质完全不同的“公开钥匙分发”问题。
       其次,公开密钥加密系统允许用户事先把公开钥匙发表或刊登出来。比如,用户可以把它和电话一起刊登在电话簿上,让任何人都可以查找到,或者把它印刷在自己的名片上;与电话号码、电子邮件地址等列写在一起。这样,素不相识的人都可以给用户发出保密的通信。不像传统加密系统,双方必须事先绚定统一密钥。
       最后,公开密钥加密不仅改进了传统加密方法,还提供了传统加密方法不具备的应用,这就是数字签字的公开鉴定系统。


(3) 使用公开密钥加密系统的数字签字技术
       与加密不同,数字签字系统的目的是保证信息的完整性和真实性。和使用手签字和印章的文件相似,数字签字系统也试图保证以下两点:(1)文件内容没有被改动;(2)文件出自签字人之手或经过签字人批准(即签字没有被改动)。
       数字签字系统是公开密钥加密技术与报文分解函数(MDF) 相结合的产物。报文分解函数是能把信息集合提炼为一个数字串的单向不可逆数学函数。首先,用报文分解函数把要签署的文件内容提炼为一个很长的数字,称为报文分解函数的值。签字人用公开密钥加密系统中的秘密钥匙来加密这个报文分解函数值,生成所谓的“数字签字”。该过程表示如下图所示。


* 数字签字的原理
       收件人在收到经数字签字的文件以后,对此数字签字进行鉴定。用签字人的公开钥匙来解开。数字签字",获得报文分解函数值;重新计算文件的报文分解函数,比较其结果。如果完全相符,文件内容的完整性、正确性和签字的真实性都得到了保障。因为如果文件被改动,或者有人在没有秘密钥匙的情况下冒充签字,都将使数字签字的鉴定过程失败。

* 鉴定数字签字的原理
       在某种意义上,数字签字系统比手签字或印章更为有效。一份10 余页的手签文件很难保证每页的内容均不会被改动或替换,但数字签字却能保证文件的每一字符都未经过任何改动。目前,美国国家标准局和国家安全局正在建立数字签字标准DSS(Digital Signature Standard);以用于政府和商业文件签字。通过后的 DSS标准将使得数字签字与手签字具有同样的法律效力。PGP系统就支持类似的数字签字。

(4)与传统加密方法的结合
       公开密钥加密技术保证了文件加密和传输的可靠性,十分便于普通用户使用。与传统加密方法相比,它有许多优越的地方,但是它并不能完全取代前者。实际上,这两种似乎矛盾的加密形式是相辅相承的。如果它们结合在一起,构成所谓的混合式系统,会有更加明显的优势。
       当应用干仅一人知道密钥的文件加密时,传统加密方法是十分适合的,而公开密钥加密技术的优越性反倒显示不出来。因此;有的加密系统,如PGP系统,还为此专门保留了使用传统加密技术的“文件加密”功能。
       同时,目前已知的公开密钥加密系统的加密算法运算量都较大;与可比的传统加密算法在速度上有显著差距。所以,许多加密系统,多采用公开密钥加密技术和传统加密方法结合的方式。如使用一把会话钥匙和传统加密方法来加密较长的报文内容,再用公开赛钥技术来加密较短小的会话钥匙。PGP系统和Netscape 2.0等就是采用这种方法。
       公开密钥加密技术还能够拯救一些“年迈”的传统加密方法,使它们能继续发挥作用。DES就是一个很好的例子。自从DES被确定为加密标准后,已经广泛地应用于许多领域。这20多年来技术的进步,它开始显得单薄起来。在公开密钥加密技术出现以前,由于统一密钥的不便于分发和使用,许多使用者长时间地使用同一把密钥,造成通信的极不安全。
       公开密钥加密技术出现以后,可以用来加密会话密钥;通信双方就可以经常更换会话密钥,极大地提高了通信的保密能力。
       公开密钥加密技术并不是完美无缺的,它也存在某些有待解决的问题。例如,公开钥匙的分发问题需要解决。虽然用户不必担心公开钥匙泄密,但却需要考虑有人冒名顶替公布假的公开钥匙。所以应当尽可能地广泛地公布正确的公开钥匙,以防假冒。就像将电话号码在电话簿上公开出来一样,公布面越广,号码的正确性就越能够经多方面核实而得到保证。当然,即使这样也仍然不能完全保障它们都是正确的和真实的。


       目前已知的公开密钥加密方法运算量较大,加密和解密的速度较慢。比如,RSA Data Security公司(RSA算法专利版权的发行机构)的技术资料表明,RSA的软件实现比DES的软件实现慢100倍左右;而RSA的硬件实现则比 DES的硬件实现慢1000到10000倍。随着加密技术的商业化和技术的进步,这个差距可能会进一步缩短。但目前,速度差异的存在还是许多加密系统宁可采用混合式加密算法的主要原因。

 

本人博客已搬家,新地址为:http://yidao620c.github.io/

分享到:
评论

相关推荐

    公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.zip

    公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.zip

    公钥私钥加密解密数字证书数字签名详解.docx

    详细介绍了区块链使用的不对称加密在数字证书数字签名的应用

    java_DigitalSign.rar_ sign md5_hash md5 in java_公钥数字签名_加密_数字签名 j

    (2)发送方用自己的私钥加密生成的信息生成发送方的数字签名,发送方把这个数字签名作为发送信息的附件和明文信息,一同用接收方的公钥进行加密,将加密后的密文一同发送给接收方; (3)接收方首先把接收到的密文...

    深空公钥加密系统v2.0绿色免费版

    深空公钥加密系统是一款功能强大的公钥加密工具,工具为绿色版本,简单易用,主要功能可帮助用户通过RSA512位-RSA8192位不等密钥长度的公钥来对电脑的文件实现加密操作,软件支持数字签名、数字验签、公钥加密、私钥...

    论文研究-贝叶斯概率LSA模型权重更新算法.pdf

    签密能够同时完成公钥加密和数字签名两项任务,实现消息既保密又认证的双重功能。同时,签密的计算量和通信代价都要低于传统的保密认证方法——先签名后加密。鉴于签密重要性和无证书密码系统的优点,首次提出了一个...

    C# 实现与JAVA互通 加签/验签,RSA加密/解密

    * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。  * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。  * RSA加密解密:私钥...

    走向后量子区块链:抗量子计算攻击的区块链加密综述

    此外,还对最有前途的区块链后量子公钥加密和数字签名方案的特征和性能进行了广泛的比较。因此,本文试图为未来的区块链研究人员和开发人员提供一个关于后量子区块链安全的广泛视角和有用的指导方针。 shor和grover...

    关于RSA公钥加密算法及其安全性讨论

    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。 RSA...

    安全的即时通信软件.zip

    任务:采用加密、数字签名技术技术对即时通讯软件的通信进行保护。 功能要求: 1.可以进行通信的身份验证,登陆时需要对密码进行加密; 2.采用公钥密码技术验证和签名; 3.采用公钥密码和对称密码结合来进行消息加密...

    PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名

    PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解 php代码简单生成 容易理解

    现代密码学 原理与协议

    密码学在确保数据的私密性和...在探讨了公钥加密和数字签名之后,介绍了随机预言模型及其应用。无论作为教材、参考书或者自学用书,《现代密码学:原理与协议》呈献给读者透彻理解现代密码学这一迷人主题所需要的工具。

    C# 模拟数字签名过程

    (4) 发方用收方B的公钥PBB,采用RSA算法对对称密钥SK加密,形成数字信封DE,就好像将对称密钥SK装到了一个用收方公钥加密的信封里;(RSACryptoServiceProvider.Encrypt()) (5) 发方A将加密信息E和数字信封DE...

    数字签名更改程序

    更改签名数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于...

    现代密码学_原理与协议.pdf

    《现代密码学:原理与协议》...在探讨了公钥加密和数字签名之后,介绍了随机预言模型及其应用。无论作为教材、参考书或者自学用书,《现代密码学:原理与协议》呈献给读者透彻理解现代密码学这一迷人主题所需要的工具。

    openssl数字签名和加密

    基于linux c openssl 库实现公钥签名私钥验签 公钥加密和私钥解密

    论文研究-具有完全保密性的高效可净化数字签名方案.pdf

    为此,提出一个新的可净化数字签名方案,它基于传统数字签名方案、BLS签名方案和公钥加密方案构造,且满足可净化数字签名的所有基本安全性需求,即不可伪造性、不可变性、透明性、完全保密性及可审计性,同时具有比...

    关于数字签名

    数字签名数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于...

    论文研究-基于公钥加密的端到端安全短信系统 .pdf

    基于公钥加密的端到端安全短信系统,刘会,王静,本文给出了一种基于公钥加密的端到端安全短信系统,利用RSA公钥加密算法和DSA数字签名算法对短信进行端到端加密和认证,弥补了GSM网��

    基于数字签名信息系统的毕业设计实现.zip

    该系统将使用公钥加密和私钥解密的方式来实现数字签名。 ## 系统设计 ### 系统架构 该系统将采用客户端-服务器架构,客户端将负责生成数字签名并将其发送到服务器,服务器将验证数字签名的真实性。 ### 技术实现...

    信息摘要,数字签名的java实现

    (2)发送方用自己的私钥加密生成的信息生成发送方的数字签名,发送方把这个数字签名作为发送信息的附件和明文信息,一同用接收方的公钥进行加密,将加密后的密文一同发送给接收方; (3)接收方首先把接收到的密文...

Global site tag (gtag.js) - Google Analytics