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)颁发的...
不过,鉴于标题提到了“SSL协议与数字证书原理”,我可以从这两个方面展开详细的介绍,以满足您的要求。 SSL协议(安全套接层协议)是一种位于TCP/IP协议与各种应用层协议之间的安全协议,它最初是由网景(Netscape...
其次,通信安全加强的装置,如硬件加密模块、安全网关、防火墙设备等,可以在物理层面上增强系统的安全性。这些装置可以实现数据的实时加密、流量监控和恶意行为阻断。 通信方法的改进也是提高安全性的关键。例如,...
一个加密通信过程的演化 加密通信过程通常经历以下四个阶段: 1. **第一阶段**:双方交换公钥,确保对方能够识别自己的身份。 2. **第二阶段**:使用公钥加密会话密钥,保证通信的安全性。 3. **第三阶段**:使用...
- 证书交换(ServerCertificate、ClientCertificate):服务器和客户端可以互相交换数字证书,用于身份验证。 - 密钥交换(ServerKeyExchangeMessage、ClientKeyExchangeMessage):用于在双方之间交换密钥信息。 - ...
SET通过复杂的加密算法、数字证书和签名技术,确保了交易的匿名性、完整性和不可否认性,成为电子商务安全交易的重要规范。 然后,讲义中提到了第三方支付的发展情况,如快钱和支付宝。第三方支付平台作为商家和...
SSL协议是一种广泛应用于互联网的安全协议,它通过在客户端和服务器之间建立一个加密通道,确保数据在互联网上传输过程中的安全。SSL协议主要包括对称加密、非对称加密和哈希算法等技术,能够为通信双方提供机密性...
- **抵抗攻击**:身份验证(动态/一次性密码、数字证书、生物识别)、授权控制、数据加密、完整性保护。 - **检测攻击**:入侵检测系统、通信模式过滤。 - **从攻击中恢复**:未详细说明。 **1.0.1.1.4 软件架构...
3. **加密通信**:保护通信内容不被窃取或监听是另一个关键安全需求。采用加密技术,如AES、SSL/TLS等,可确保数据在传输过程中的机密性。 4. **访问控制**:物联网网络层应有严格的访问控制策略,限制不同设备和...
9. **版本控制**:作为一个开源项目,源码可能使用Git进行版本控制,通过提交历史可以了解项目的演化过程。 10. **文档与注释**:良好的源码应该包含清晰的注释和文档,解释各个函数、类和模块的作用,以便其他...