扫码进入网站如何做,自己做的网站出现iis7,汕头建网站,企业网站自己可以做最开始的加密
浏览器与服务器之间需要防止传输的数据被黑客破解。因此#xff0c;浏览器在发送数据时会对数据进行加密#xff0c;并把加密的密钥#xff08;或密钥的某些部分#xff09;放在数据的某一个区域中。服务器收到数据后#xff0c;会提取密钥并用它来解密数据…最开始的加密
浏览器与服务器之间需要防止传输的数据被黑客破解。因此浏览器在发送数据时会对数据进行加密并把加密的密钥或密钥的某些部分放在数据的某一个区域中。服务器收到数据后会提取密钥并用它来解密数据。这样的加密方式称为 对称加密。
对称加密的缺点
问题在于当多个客户端都使用相同的加密算法时黑客可以通过拦截和分析加密数据推测出加密密钥的位置。这个过程叫做密钥泄漏因此对称加密 在密钥管理上有较大风险一旦密钥被泄漏通信的安全性就会受到威胁。因此传统的对称加密不完全安全。 非对称加密
后来科学家们发现了 非对称加密 的方法这种方法解决了对称加密中的密钥管理问题。
非对称加密原理
非对称加密的基本思想是使用公钥加密使用私钥解密。其中公钥可以公开任何人都可以用它来加密消息而私钥只有对应的接收方才能拥有只有拥有私钥的人才能解密消息。
加密过程如下
服务器拥有一对 公钥 和 私钥其中 公钥 是公开的任何人都可以获取而 私钥 则严格保密。客户端想要与服务器进行通信时会使用 服务器的公钥 来加密消息。服务器收到消息后用自己的 私钥 解密消息。
通过这种方式只有服务器能够解密客户端发送的消息确保了数据的机密性。
非对称加密的缺点
这种方法存在一个问题即 服务器到客户端 的消息并没有加密黑客依然可以拦截服务器发送的消息因为它们是明文的。 双向非对称加密
为了更好地保护通信的双方提出了 双向非对称加密。在这种加密模式中双方都有公钥和私钥并通过交换公钥进行加密和解密。
双向非对称加密流程
客户端和服务器都各自拥有一对公钥和私钥。客户端向服务器发送请求时会先发送自己的公钥给服务器。服务器收到客户端的公钥后也发送自己的公钥给客户端。然后客户端和服务器互相使用对方的公钥加密消息自己用私钥解密对方的消息。
双向非对称加密的缺点
计算资源消耗大非对称加密算法如 RSA相较于对称加密如 AES来说计算资源消耗较大可能会导致网页渲染变慢影响用户体验。 非对称加密 对称加密的结合
为了解决双向非对称加密中的性能问题现代网络通信通常结合了 非对称加密 和 对称加密。
加密流程
第一次请求客户端在与服务器建立连接时使用 服务器的公钥 加密一个随机生成的 对称密钥例如 AES 密钥。服务器使用 自己的私钥 解密该对称密钥。一旦密钥交换完成客户端和服务器就可以使用这个对称密钥进行加密和解密数据后续的数据传输都使用高效的对称加密进行保护。
这种方式既保证了通信的安全性又避免了非对称加密带来的性能问题。 非对称加密 对称加密的结合 —— 升级版
在实际应用中单纯的非对称加密和对称加密结合方式依然存在一些潜在的安全隐患尤其是客户端生成的私钥较容易被猜测出来。为此引入了 随机数生成 来进一步提高安全性。
升级版的加密流程
客户端随机数客户端在第一次通信时向服务器发送一个随机数 1。服务器随机数服务器回应时会发送一个包含随机数 2 的请求。客户端生成随机数客户端收到服务器的请求后会生成一个随机数 3并用 服务器的公钥 加密后发送给服务器。双方密钥生成客户端和服务器通过这三个随机数生成对称加密密钥如 AES 密钥。双方用这个密钥进行后续的数据加密和解密。
校验密钥一致性
在密钥生成后双方需要校验生成的对称密钥是否一致以确保双方的随机数生成的秘钥都是正确的 非对称加密 对称加密的结合的漏洞 —— 中间人攻击
虽然 非对称加密 对称加密 的结合在理论上很安全但仍然存在 中间人攻击 的风险。
中间人攻击示意图
客户端 ---- 恶意服务器 ---- 目标服务器
攻击流程
客户端发起请求时恶意服务器伪装成目标服务器并向客户端发送自己的 公钥。客户端误将数据用恶意服务器的 公钥 加密并发送给恶意服务器。恶意服务器用自己的 私钥 解密数据获得客户端的私钥和密钥信息。恶意服务器将数据转发给目标服务器并伪装成客户端进行后续通信。通过这种方式恶意服务器可以窃取通信双方的敏感信息。 CA证书HTTPS认证
为了防止中间人攻击SSL/TLS 引入了 CA证书颁发机构认证。CA机构充当了一个“公证人”的角色帮助验证服务器的身份。
证书签发过程
服务器将域名、公司信息等提交给 CA 进行认证。CA 使用其 私钥 对服务器信息进行加密生成一个 数字签名。将该签名与服务器信息一起打包返回给服务器这样就完成了认证。
证书验证过程
当客户端与经过 CA 认证的服务器建立连接时
服务器将自己的证书包含公钥和数字签名发送给客户端。客户端计算该证书的 hash 值称为 hash1然后使用 CA 的公钥 解密数字签名得到 hash2。如果 hash1 和 hash2 相同则说明证书没有被篡改通信是安全的。如果证书验证失败浏览器会警告用户连接不安全。 CA证书服务器的认识
为了避免单个 CA 证书服务器的负担过重CA 采用了分层认证架构。根级 CA 服务器是最权威的下面的中级 CA 服务器可以为下级的证书颁发机构提供认证服务。
CA 证书验证过程
客户端验证服务器证书时首先验证证书的签发机构。如果证书由根证书服务器签发验证成功。如果证书不是根证书则会向上逐层验证签发证书直到找到根证书。根证书通常已经预安装在操作系统或浏览器中一旦找到可信根证书验证过程就完成。
图示SSL/TLS通信过程
±------------------ ±--------------------- | Client | | Server | |-------------------| |----------------------| | 1. Request data | --------- | 2. Send certificate | | 3. Encrypt with | | 4. Decrypt using | | server’s pub | | private key | | 5. Send encrypted | | 6. Send response | | data to server | | encrypted with | ±------------------ | shared key | ±---------------------
通过图示可以更清晰地看到客户端与服务器在 SSL/TLS 握手过程中如何进行加密通信。