`

公钥加密和数字签名

阅读更多

       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系统不仅包含公钥加密、数字签名和认证,还包括证书管理、密钥生命周期管理等组件。它提供了一套完整的框架,确保了网络通信的安全性和完整性。例如,在电子邮件安全、HTTPS web通信、文件传输等方面,PKI都是不...

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

    - 公钥用于加密数据,而私钥则用于解密这些由公钥加密的数据。 - 摘要是指对需要传输的数据进行哈希运算后得到的结果,通常使用SHA1或SHA2等算法。 - 签名是指使用私钥对数据的摘要进行加密所得到的结果,它可以...

    数据加密与数字签名系统

    数字签名并非传统的签名,而是一种利用公钥加密技术提供的数据完整性验证和发送者身份确认的手段。它结合了非对称加密和哈希函数,确保信息未被篡改且来自预期的发送者。在C++中实现数字签名,我们可以使用如OpenSSL...

    公钥加密私钥解密&私钥加密公钥解密

    在现代信息安全领域,公钥加密私钥解密及私钥加密后由公钥解密或验证的技术被广泛应用于数据保护、身份验证和安全通信等多个方面。下面将详细阐述这两种技术的基本原理及其应用场景。 #### 一、公钥加密私钥解密 ...

    Java加密和数字签名编程快速入门.rar_Java加密_java 数字 签名_java 数字签名_数字 签名_数字签名

    在Java中,我们可以使用Java Cryptography Extension (JCE)框架来实现各种加密算法,如AES(高级加密标准)、DES(数据加密标准)和RSA(公钥加密技术)。这些算法可以用于数据的加解密,保证数据在传输过程中的安全...

    java数字签名源程序

    总的来说,这个Java数字签名源程序是一个学习和实践密码学概念的实用工具,特别是对于那些希望深入理解公钥加密和数字签名在网络安全中的应用的人来说。通过这个程序,开发者能够掌握如何在Java环境中实现这些安全...

    ASP基于RSA的数字签名的设计与实现(源代码+论文).zip

    该算法基于大数因子分解的困难性,用于公钥加密和数字签名。RSA的核心包括一对密钥:公钥和私钥。任何人都可以使用公钥加密数据,但只有持有对应私钥的人才能解密,确保了信息的机密性。在数字签名中,我们使用私钥...

    公钥密码 数字签名

    RSA(Rivest–Shamir–Adleman)是一种广泛使用的公钥加密技术,同样适用于数字签名。 - **密钥生成**: - 选择两个大素数p和q; - 计算n=p*q,以及欧拉函数φ(n)=(p-1)*(q-1); - 选择一个与φ(n)互质的整数e...

    非对称加密算法 数字签名算法

    非对称加密算法和数字签名是信息技术中两个关键的安全概念,尤其在网络安全和数据保护方面起着至关重要的作用。在Java编程环境中,这些技术被广泛应用于实现安全通信、身份验证和数据完整性保护。 非对称加密算法,...

    不对称加密及数字签名的实例应用

    不对称加密和数字签名是两种广泛使用的安全技术,它们为数据提供了强大的保护。本实例应用聚焦于如何在C#编程环境中实现这些技术。 不对称加密,也称为公钥加密,是一种基于两个密钥(公钥和私钥)的加密方法。公钥...

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

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

    使用公钥加密私钥解密原理

    这一特性使得公钥加密成为数字签名、安全通信和身份验证等应用场景的核心技术。 在Java中,我们可以使用Java Cryptography Extension (JCE)框架来实现公钥加密和私钥解密。JCE提供了一系列接口和类,如...

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

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

    php接口数据加密、解密、验证签名

    接着,RSA是一种非对称加密算法,用于公钥加密和数字签名。在示例中,`$publickey`是RSA公钥,`$signature`是已经签名的数据。RSA签名是验证数据完整性和来源的有效方法: ```php $r = new Crypt_RSA(); $r->load...

    Java加密和数字签名编程快速入门

    3. 签名过程:生成消息摘要(哈希值),用私钥加密摘要得到数字签名,接收方用公钥解密并验证哈希值。 4. 签名与证书:数字签名通常与X.509证书结合使用,证书包含公钥和颁发者的身份信息,确保公钥的来源可信。 三...

    数字证书原理,公钥私钥加密原理

    这种一对密钥的机制不仅用于加密,还用于数字签名和身份验证。 非对称加密算法在数字证书和公钥私钥加密原理中起着核心作用,其中最著名的算法之一是RSA算法。RSA算法的安全性基于大数分解的数学难题,即给定两个大...

    加密 RSA 数字签名 数字证书 实例

    RSA是一种公钥加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,因其发明者的名字首字母命名。它基于大素数分解的数学难题,提供了发送端和接收端两把不同的密钥——公钥和私钥。公钥可以公开,...

    Java加密和数字签名编程 Java

    Java加密和数字签名编程是信息安全领域中的重要技术,它们在软件开发中扮演着不可或缺的角色,尤其是在保护数据安全、验证信息完整性和确保身份真实性方面。在Java中,这些功能主要通过Java Cryptography ...

Global site tag (gtag.js) - Google Analytics