2、一个加密通信过程的演化
我们来看一个例子,现在假设“服务器”和“客户”要在网络上通信,并且他们打算使用RSA(参看前面的RSA简介)来对通信进行加密以保证谈话内容的安全。由于是使用RSA这种公钥密码体制,“服务器”需要对外发布公钥(算法不需要公布,RSA的算法大家都知道),自己留着私钥。“客户”通过某些途径拿到了“服务器”发布的公钥,客户并不知道私钥。“客户”具体是通过什么途径获取公钥的,我们后面再来说明,下面看一下双方如何进行保密的通信:
2.1 第一回合:
“客户”->“服务器”:你好
“服务器”->“客户”:你好,我是服务器
“客户”->“服务器”:????
因为消息是在网络上传输的,有人可以冒充自己是“服务器”来向客户发送信息。例如上面的消息可以被黑客截获如下:
“客户”->“服务器”:你好
“服务器”->“客户”:你好,我是服务器
“客户”->“黑客”:你好 // 黑客在“客户”和“服务器”之间的某个路由器上截获“客户”发给服务器的信息,然后自己冒充“服务器”
“黑客”->“客户”:你好,我是服务器
因此“客户”在接到消息后,并不能肯定这个消息就是由“服务器”发出的,某些“黑客”也可以冒充“服务器”发出这个消息。如何确定信息是由“服务器”发过来的呢?有一个解决方法,因为只有服务器有私钥,所以如果只要能够确认对方有私钥,那么对方就是“服务器”。因此通信过程可以改进为如下:
2.2 第二回合:
“客户”->“服务器”:你好
“服务器”->“客户”:你好,我是服务器
“客户”->“服务器”:向我证明你就是服务器
“服务器”->“客户”:你好,我是服务器 {你好,我是服务器}[私钥|RSA]
// 注意这里约定一下,{} 表示RSA加密后的内容,[ | ]表示用什么密钥和算法进行加密,后面的示例中都用这种表示方式,例如上面的 {你好,我是服务器}[私钥|RSA] 就表示用私钥对“你好,我是服务器”进行加密后的结果。
为了向“客户”证明自己是“服务器”, “服务器”把一个字符串用自己的私钥加密,把明文和加密后的密文一起发给“客户”。对于这里的例子来说,就是把字符串 “你好,我是服务器”和这个字符串用私钥加密后的内容 {你好,我是服务器}[私钥|RSA] 发给客户。
“客户”收到信息后,她用自己持有的公钥解密密文,和明文进行对比,如果一致,说明信息的确是由服务器发过来的。也就是说“客户”把 {你好,我是服务器}[私钥|RSA] 这个内容用公钥进行解密,然后和“你好,我是服务器”对比。因为由“服务器”用私钥加密后的内容,由并且只能由公钥进行解密,私钥只有“服务器”持有,所以如果解密出来的内容是能够对得上的,那说明信息一定是从“服务器”发过来的。
假设“黑客”想冒充“服务器”:
“黑客”->“客户”:你好,我是服务器
“客户”->“黑客”:向我证明你就是服务器
“黑客”->“客户”:你好,我是服务器 {你好,我是服务器}[???|RSA] //这里黑客无法冒充,因为他不知道私钥,无法用私钥加密某个字符串后发送给客户去验证。
“客户”->“黑客”:????
由于“黑客”没有“服务器”的私钥,因此它发送过去的内容,“客户”是无法通过服务器的公钥解密的,因此可以认定对方是个冒牌货!
到这里为止,“客户”就可以确认“服务器”的身份了,可以放心和“服务器”进行通信,但是这里有一个问题,通信的内容在网络上还是无法保密。为什么无法保密呢?通信过程不是可以用公钥、私钥加密吗?其实用RSA的私钥和公钥是不行的,我们来具体分析下过程,看下面的演示:
2.3 第三回合:
“客户”->“服务器”:你好
“服务器”->“客户”:你好,我是服务器
“客户”->“服务器”:向我证明你就是服务器
“服务器”->“客户”:你好,我是服务器 {你好,我是服务器}[私钥|RSA]
“客户”->“服务器”:{我的帐号是aaa,密码是123,把我的余额的信息发给我看看}[公钥|RSA]
“服务器”->“客户”:{你的余额是100元}[私钥|RSA]
注意上面的的信息 {你的余额是100元}[私钥],这个是“服务器”用私钥加密后的内容,但是我们之前说了,公钥是发布出去的,因此所有的人都知道公钥,所以除了“客户”,其它的人也可以用公钥对{你的余额是100元}[私钥]进行解密。所以如果“服务器”用私钥加密发给“客户”,这个信息是无法保密的,因为只要有公钥就可以解密这内容。然而“服务器”也不能用公钥对发送的内容进行加密,因为“客户”没有私钥,发送个“客户”也解密不了。
这样问题就又来了,那又如何解决呢?在实际的应用过程,一般是通过引入对称加密来解决这个问题,看下面的演示:
相关推荐
"加密通信过程演化以及PKI 体系结构" 加密通信过程的演化是指从最初的简单加密算法到现在的复杂的加密通信过程的发展。数字证书的产生是为了解决身份验证和加密通信的安全问题。 数字证书是由认证中心(CA)颁发的...
非对称加密算法在数字证书和公钥私钥加密原理中起着核心作用,其中最著名的算法之一是RSA算法。RSA算法的安全性基于大数分解的数学难题,即给定两个大素数,要分解得到这两个数是相当困难的。公钥和私钥的生成过程...
【数字证书原理与公钥私钥加密概述】 在信息技术领域,数据安全至关重要,尤其是在网络通信中。为了确保信息不被未经授权的用户访问或篡改,加密技术被广泛应用。本文将探讨数字证书的基本原理以及公钥私钥加密的...
实验目的旨在让学生了解 PKI 体系、用户证书申请和 CA 颁发证书过程、认证服务的安装及配置方法、使用数字证书配置安全站点的方法、使用数字证书发送签名邮件和加密邮件的方法。 一、实验目的 本实验的目的是验证...
2. 验证证书链:逐级向上验证所有中间证书直至根证书,确保每个证书都由上一级的CA签名,并且证书没有过期。 3. 验证证书主体:核对证书中的主体信息(如域名、组织名等)是否与预期通信方相符。 4. 验证证书吊销...
RSA算法就是利用这个特性来构建加密和解密过程的。公钥和私钥是通过数学计算得到的一对密钥,公钥用于加密,私钥用于解密,确保了只有持有私钥的人才能解密信息。 在Java中,我们可以使用Java Cryptography ...
最后,`JAVA使用数字证书加密文件.doc`可能是一个文档,详细介绍了整个过程和步骤,包括如何使用提供的工具和代码示例。`好礼说明 - 副本.txt`可能是关于额外资源或优惠的说明,但与核心的加密技术无关。 综上所述...
文档加密解密,数字证书,密钥生成,聊天加密,以及界面设计
数字证书原理是网络安全领域中的关键概念,主要用于身份验证和数据加密。在互联网通信中,确保信息的机密性、完整性和来源的可靠性至关重要。数字证书提供了一种方式来验证通信双方的身份,同时允许安全的数据交换。...
【数字证书原理与加解密通讯】\n\n数字证书是一种在网络通信中验证身份和确保信息安全的重要工具。它基于公钥密码体制,如RSA,确保数据的加密和解密过程安全可靠。在这个体制中,每个参与者都有一对密钥:公钥和...
首先,X.509数字证书包含了一个公钥,它是非对称加密中的一个关键组成部分。这个公钥可以被任何人获取,用于加密信息,但只有持有对应私钥的接收者才能解密。这种机制确保了只有预期的接收者能够读取信息,提供了...
根据提供的文件信息,我们可以深入探讨数字证书与加密认证的相关知识点。 ### 数字证书与加密认证基础知识 #### 数字证书 数字证书是一种用于网络环境中验证实体身份的电子文档。它通过公钥基础设施(PKI)来确保...
RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数字签名、数据加密和安全通信中。本文将详细讲解RSA算法的加签、加密、解密以及验签的过程,结合Java语言来实现这一系列操作,并涉及到证书...
计算机网络原理-140第7章 网络安全--非对称加密和数字签名.mp4
这个过程主要是为了生成一个会话密钥,用于在通信双方之间加密后续传输的数据。常见的密钥交换算法包括RSA、Diffie-Hellman和ECDH(椭圆曲线Diffie-Hellman)等。 2. 服务器身份验证:在SSL握手阶段,服务器会通过...
STM32-CRYPLIB是STM32微控制器平台上的一个加密库,它提供了一整套安全加密算法,包括DES(Data Encryption Standard)、TDES(Triple DES,即3DES)、AES(Advanced Encryption Standard)、ARC4(Arcfour,一种流...
标题中的“电信设备-对在一个程序和至少一个用户装置间计算机辅助数字通信加密保护的方法”表明,这个压缩包文件涉及的是通信安全领域的技术,特别是针对计算机辅助数字通信的加密保护。这种加密保护方法通常用于...
该配置的第二部分是申请数字证书,即申请人向证书服务器申请数字证书,以便在网络中进行身份认证和加密通信。 在申请数字证书之前,需要先配置证书服务器,使其能够颁发数字证书。证书服务器的管理员需要创建证书...