2.4 第四回合:
“客户”->“服务器”:你好
“服务器”->“客户”:你好,我是服务器
“客户”->“服务器”:向我证明你就是服务器
“服务器”->“客户”:你好,我是服务器 {你好,我是服务器}[私钥|RSA]
“客户”->“服务器”:{我们后面的通信过程,用对称加密来进行,这里是对称加密算法和密钥}[公钥|RSA] //蓝色字体的部分是对称加密的算法和密钥的具体内容,客户把它们发送给服务器。
“服务器”->“客户”:{OK,收到!}[密钥|对称加密算法]
“客户”->“服务器”:{我的帐号是aaa,密码是123,把我的余额的信息发给我看看}[密钥|对称加密算法]
“服务器”->“客户”:{你的余额是100元}[密钥|对称加密算法]
在上面的通信过程中,“客户”在确认了“服务器”的身份后,“客户”自己选择一个对称加密算法和一个密钥,把这个对称加密算法和密钥一起用公钥加密后发送给“服务器”。注意,由于对称加密算法和密钥是用公钥加密的,就算这个加密后的内容被“黑客”截获了,由于没有私钥,“黑客”也无从知道对称加密算法和密钥的内容。
由于是用公钥加密的,只有私钥能够解密,这样就可以保证只有服务器可以知道对称加密算法和密钥,而其它人不可能知道(这个对称加密算法和密钥是“客户”自己选择的,所以“客户”自己当然知道如何解密加密)。这样“服务器”和“客户”就可以用对称加密算法和密钥来加密通信的内容了。
总结一下,RSA加密算法在这个通信过程中所起到的作用主要有两个:
- 因为私钥只有“服务器”拥有,因此“客户”可以通过判断对方是否有私钥来判断对方是否是“服务器”。
- 客户端通过RSA的掩护,安全的和服务器商量好一个对称加密算法和密钥来保证后面通信过程内容的安全。
如果这里您理解了为什么不用RSA去加密通信过程,而是要再确定一个对称加密算法来保证通信过程的安全,那么就说明前面的内容您已经理解了。(如果不清楚,再看下2.3和2.4,如果还是不清楚,那应该是我们说清楚,您可以留言提问。)
到这里,“客户”就可以确认“服务器”的身份,并且双方的通信内容可以进行加密,其他人就算截获了通信内容,也无法解密。的确,好像通信的过程是比较安全了。
但是这里还留有一个问题,在最开始我们就说过,“服务器”要对外发布公钥,那“服务器”如何把公钥发送给“客户”呢?我们第一反应可能会想到以下的两个方法:
a)把公钥放到互联网的某个地方的一个下载地址,事先给“客户”去下载。
b)每次和“客户”开始通信时,“服务器”把公钥发给“客户”。
但是这个两个方法都有一定的问题,
对于a)方法,“客户”无法确定这个下载地址是不是“服务器”发布的,你凭什么就相信这个地址下载的东西就是“服务器”发布的而不是别人伪造的呢,万一下载到一个假的怎么办?另外要所有的“客户”都在通信前事先去下载公钥也很不现实。
对于b)方法,也有问题,因为任何人都可以自己生成一对公钥和私钥,他只要向“客户”发送他自己的私钥就可以冒充“服务器”了。示意如下:
“客户”->“黑客”:你好 //黑客截获“客户”发给“服务器”的消息
“黑客”->“客户”:你好,我是服务器,这个是我的公钥 //黑客自己生成一对公钥和私钥,把公钥发给“客户”,自己保留私钥
“客户”->“黑客”:向我证明你就是服务器
“黑客”->“客户”:你好,我是服务器 {你好,我是服务器}[黑客自己的私钥|RSA] //客户收到“黑客”用私钥加密的信息后,是可以用“黑客”发给自己的公钥解密的,从而会误认为“黑客”是“服务器”
因此“黑客”只需要自己生成一对公钥和私钥,然后把公钥发送给“客户”,自己保留私钥,这样由于“客户”可以用黑客的公钥解密黑客的私钥加密的内容,“客户”就会相信“黑客”是“服务器”,从而导致了安全问题。这里问题的根源就在于,大家都可以生成公钥、私钥对,无法确认公钥对到底是谁的。 如果能够确定公钥到底是谁的,就不会有这个问题了。例如,如果收到“黑客”冒充“服务器”发过来的公钥,经过某种检查,如果能够发现这个公钥不是“服务器”的就好了。
为了解决这个问题,数字证书出现了,它可以解决我们上面的问题。先大概看下什么是数字证书,一个证书包含下面的具体内容:
- 证书的发布机构
- 证书的有效期
- 公钥
- 证书所有者(Subject)
- 签名所使用的算法
- 指纹以及指纹算法
证书的内容的详细解释会在后面详细解释,这里先只需要搞清楚一点,数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。也就是说,我们拿到一个数字证书,我们可以判断出这个数字证书到底是谁的。至于是如何判断的,后面会在详细讨论数字证书时详细解释。现在把前面的通信过程使用数字证书修改为如下:
2.5 第五回合:
“客户”->“服务器”:你好
“服务器”->“客户”:你好,我是服务器,这里是我的数字证书 //这里用证书代替了公钥
“客户”->“服务器”:向我证明你就是服务器
“服务器”->“客户”:你好,我是服务器 {你好,我是服务器}[私钥|RSA]
注意,上面第二次通信,“服务器”把自己的证书发给了“客户”,而不是发送公钥。“客户”可以根据证书校验这个证书到底是不是“服务器”的,也就是能校验这个证书的所有者是不是“服务器”,从而确认这个证书中的公钥的确是“服务器”的。后面的过程和以前是一样,“客户”让“服务器”证明自己的身份,“服务器”用私钥加密一段内容连同明文一起发给“客户”,“客户”把加密内容用数字证书中的公钥解密后和明文对比,如果一致,那么对方就确实是“服务器”,然后双方协商一个对称加密来保证通信过程的安全。到这里,整个过程就完整了,我们回顾一下:
相关推荐
数字证书是一种安全证书,用来证明某一实体(如个人、服务器或组织)的身份,它是由一个权威的认证机构(CA)签发的。数字证书包含的主要信息有证书拥有者的公钥、证书所有者的名称、证书的有效期限、证书序列号、...
【数字证书原理与公钥私钥加密概述】 在信息技术领域,数据安全至关重要,尤其是在网络通信中。为了确保信息不被未经授权的用户访问或篡改,加密技术被广泛应用。本文将探讨数字证书的基本原理以及公钥私钥加密的...
数字证书实验详细步骤及原理 ...数字证书实验详细步骤及原理实验旨在让学生了解数字证书在安全 Web 通信和电子邮件安全中的应用。通过实验,学生可以掌握使用数字证书配置安全站点和发送签名邮件和加密邮件的方法。
在数字证书的使用过程中,SM4常用于对敏感数据的加密,例如用户密码、会话密钥等,提供快速且安全的数据保护。 国密数字证书验证方法通常包括以下步骤: 1. 验证证书的签名:使用SM3算法计算证书的哈希值,然后使用...
在Java编程环境中,数字证书是用于安全通信的重要工具,它们主要应用于加密、身份验证和数据完整性保护。在“JAVA使用数字证书加密文件”的主题中,我们聚焦于如何使用RSA算法结合数字证书对文件进行加密。RSA是一种...
文档加密解密,数字证书,密钥生成,聊天加密,以及界面设计
【数字证书原理与加解密通讯】\n\n数字证书是一种在网络通信中验证身份和确保信息安全的重要工具。它基于公钥密码体制,如RSA,确保数据的加密和解密过程安全可靠。在这个体制中,每个参与者都有一对密钥:公钥和...
首先,X.509数字证书包含了一个公钥,它是非对称加密中的一个关键组成部分。这个公钥可以被任何人获取,用于加密信息,但只有持有对应私钥的接收者才能解密。这种机制确保了只有预期的接收者能够读取信息,提供了...
一个标准的数字证书包含以下信息: 1. **所有者的名称**:证书的所有者,通常是个人或组织。 2. **所有者的公钥**:用于加密通信的公钥。 3. **有效期**:证书的有效时间范围。 4. **颁发机构**:可信任的第三方...
数字通信技术是现代通信系统的核心技术之一,它的出现解决了模拟通信技术的瓶颈,为实现可靠、高速及长距离通信提供了技术基础。在本篇文章中,我们将对数字通信技术的原理、特点以及应用进行简单的分析。 数字通信...
RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数字签名、数据加密和安全通信中。本文将详细讲解RSA算法的加签、加密、解密以及验签的过程,结合Java语言来实现这一系列操作,并涉及到证书...
bcprov-jdk15是Bouncy Castle针对Java 1.5及更高版本的一个组件,它包含了各种加密功能,如RSA、AES、DES等,以及PKCS#7、X.509证书和SSL/TLS协议的支持。 **bcprov-jdk15on-1.47.jar的内容** bcprov-jdk15on-1.47...
6. 证书信任链:在SSL通信中,如果一个证书是由一个不受信任的CA签发的,那么这个证书可能会被浏览器或客户端拒绝。通常,为了确保验证的有效性,CA之间会形成一个信任链,即顶级CA(根CA)签署中级CA,而中级CA再为...
计算机网络原理-140第7章 网络安全--非对称加密和数字签名.mp4
在定时停机的应用中,我们通常会用到TON或TONR,它们可以在预设的时间间隔后触发一个特定的输出,例如停止设备运行。 加密程序是为了保护PLC程序不被非法修改或复制,提高系统的安全性。在S7-200中,可以通过以下几...
PKI 是一个基于公开密钥加密技术的基础设施,提供了加密、解密、数字签名和数字证书等功能。PKI 可以确保信息的安全和可靠性,是电子商务和网络银行等领域的重要组件。 加密、解密、数字签名和数字证书的应用 在...
标题中的“电信设备-对在一个程序和至少一个用户装置间计算机辅助数字通信加密保护的方法”表明,这个压缩包文件涉及的是通信安全领域的技术,特别是针对计算机辅助数字通信的加密保护。这种加密保护方法通常用于...
该配置的第二部分是申请数字证书,即申请人向证书服务器申请数字证书,以便在网络中进行身份认证和加密通信。 在申请数字证书之前,需要先配置证书服务器,使其能够颁发数字证书。证书服务器的管理员需要创建证书...