https是如何加密的 (知道了原理之后,希望自己能用代码实现一下,还有用于对个人信息和公钥进行加密的哈希算法,有时间也去查一下)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 由于http协议是明文传输数据,数据的安全性没有保障。为了改进这种明文传输协议,https诞生了。 https是在应用层和传输层之间,增加了一层ssl加密。

由于http协议是明文传输数据,数据的安全性没有保障。为了改进这种明文传输协议,https诞生了。

 

https是在应用层和传输层之间,增加了一层ssl加密。对于加密,请往下看:

 

1、对称加密

 

每次在发送数据之前,服务器先生成一把密钥,然后先通过明文传输的方式将密钥传递给客户端。之后服务器给客户端传送数据的时候,会用着把密钥对数据进行加密,客户端收到加密数据之后,用刚刚收到的密钥对数据进行解密。

 

弊端:(1)密钥在传输的过程中容易被人截取; (2)客户端并不知道与自己建立连接的服务器是不是真的目标服务器。

那么,如何把密钥安全的传给客户端呢?这就要看非对称加密了。

 

2、非对称加密

 

客户端和服务器各自都拥有两把钥匙,一把钥匙是公开的,称为公钥;一把是保密的(只有自己本人知道),叫做私钥

用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密

如此,服务器在给客户端传输数据的过程中,可以用客户端明文传输给他的公钥进行加密,然后客户端收到后,再用自己的私钥进行解密。客户端给服务器发送数据的时候,也采用相同的方式,这样就能保证数据的安全传输了。

 

 

但是,非对称加密的加密时间是对称加密的上百倍。如果一直采用非对称加密来进行数据的传输,速度会比较慢,如何改进?

 

3、对称加密+非对称加密结合

 

用非对称加密的方式去传输对称加密的密钥,这样可以保证对称加密的密钥可以安全的交付给对方

(也就是

1、客户端先把非对称加密的公钥明文传输给服务器;

2、服务端在接到密钥之后,会生成一把用于对称加密的密钥

3、服务器用之前接到的公钥对刚刚生成的密钥进行加密,然后传输给客户端;

4、客户端通过自己的密钥对服务器传过来的被公钥加密过的密钥进行解密;)

 

此时,服务端和客户端就都拥有了一把用于对称传输的密钥,而且这个密钥是没有被截取风险的。

但是,这样就能确保万无一失了吗?

如果你的回答是“是”,那你就太嫩了。

 

如果在步骤一的时候,公钥被第三方截取,之后客户端与第三方走完了上述的四个步骤,建立了对称加密的传输。第三方再和服务器走完上面的四步。如此,第三方拥有了和客户端进行对称传输的密钥,以及和服务器传输的密钥。而这个第三方的存在,服务器和客户端都没办法察觉到。

 

怎么办?关键问题就是客户端不知道和自己建立连接的是不是真的目标服务器。那么,我们需要在建立连接的时候,对服务器的身份进行验证。https加密的过程,闪亮登场了

 

数字证书

我们需要一个大家都认可的认证中心(CA)

 

服务器产生数字证书的过程:

1、服务器在给客户端传送公钥的过程中,会把公钥以及服务器的个人信息通过哈希算法(这个算法以后研究一下)生成信息摘要

2、之后服务器利用CA提供的私钥对信息摘要进行加密,来形成数字签名

3、将没有经过哈希算法处理的个人信息以及公钥,和数字签名合并在一起,形成数字证书

 

客户端拿到数字证书之后:

1、就会利用CA提供的公钥对数字证书里面的数字签名进行解密来得到信息摘要

2、然后对数组证书里面的服务器公钥以及服务器的个人信息进行hash得到另一份信息摘要

3、最后把两份信息摘要进行对比,如果一样,则证明是服务器。

 

如此,保证服务器的公钥就安全的交给客户端了。

 

那么CA向客户端提供的公钥以及向服务器提供的私钥又是从哪来的?

服务器需要向认证中心去申请证书,客户端也会内置这些证书。

当客户端收到服务器传来的数据数字证书时,会在内置的整数列表里,查看是否有解开该数字特征的公钥。

 

 

相关文章
|
2月前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
50 3
|
8天前
|
算法 安全
散列值使用相同的哈希算法
当使用相同的哈希算法对相同的数据进行散列时,所产生的散列值(也称为哈希值或摘要)总是相同的。这是因为哈希算法是一种确定性的函数,它对于给定的输入将始终产生相同的输出。 例如,如果你用SHA-256算法对字符串"hello world"进行哈希处理,无论何时何地,只要输入是完全一样的字符串,你都会得到相同的160位(40个十六进制字符)的SHA-256散列值。 但是,需要注意的是,即使是输入数据的微小变化也会导致产生的散列值完全不同。此外,不同的哈希算法(如MD5、SHA-1、SHA-256等)会对相同的数据产生不同的散列值。 哈希算法的一个关键特性是它们的“雪崩效应”,即输入中的一点小小
17 4
|
8天前
|
Java 数据安全/隐私保护
对称加密、非对称加密、哈希摘要
对称加密使用同一密钥进行加解密,速度快但需保密;非对称加密采用公钥加密、私钥解密,公钥可公开,安全性高但速度较慢,双向通信需双方各持一对密钥;哈希摘要是从数据中提取特征,用于数据完整性校验,不同数据的哈希值几乎不会相同。
19 0
|
1月前
|
安全 网络安全 数据安全/隐私保护
内网IP地址实现HTTPS加密访问教程
在内网环境中,为确保数据传输的安全性,绑定SSL证书搭建HTTPS服务器至关重要。本文介绍了内网IP地址的前期准备、申请SSL证书的步骤以及客户端配置方法。具体包括选择合适的CA、注册账号、提交申请、下载证书,并在客户端导入根证书,确保通信数据的安全加密。推荐使用JoySSL提供的技术解决方案,确保内网设备通信安全。
内网IP地址实现HTTPS加密访问教程
|
1月前
|
域名解析 算法 安全
免费申请https加密全攻略
访问JoySSL官网注册账号,申请免费SSL证书。选择证书类型,填写域名信息,生成CSR文件,验证域名所有权。下载并部署证书至服务器,测试HTTPS连接。注意定期续期,确保兼容性和安全性。如有问题,可联系JoySSL客服。
|
2月前
|
存储 算法 C#
C#哈希查找算法
C#哈希查找算法
|
2月前
|
存储 安全 算法
网络安全与信息安全:构建数字世界的防线在数字化浪潮席卷全球的今天,网络安全与信息安全已成为维系现代社会正常运转的关键支柱。本文旨在深入探讨网络安全漏洞的成因与影响,剖析加密技术的原理与应用,并强调提升公众安全意识的重要性。通过这些综合性的知识分享,我们期望为读者提供一个全面而深刻的网络安全视角,助力个人与企业在数字时代中稳健前行。
本文聚焦网络安全与信息安全领域,详细阐述了网络安全漏洞的潜在威胁、加密技术的强大防护作用以及安全意识培养的紧迫性。通过对真实案例的分析,文章揭示了网络攻击的多样性和复杂性,强调了构建全方位、多层次防御体系的必要性。同时,结合当前技术发展趋势,展望了未来网络安全领域的新挑战与新机遇,呼吁社会各界共同努力,共筑数字世界的安全防线。
|
2月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
179 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
3月前
|
安全 网络安全 数据安全/隐私保护
HTTPS中的加密算法
HTTPS中的加密算法
|
2月前
|
安全 网络协议 网络安全
【HTTPS】对称加密和非对称加密
【HTTPS】对称加密和非对称加密
37 0