安全零散记录
公钥和私钥
是一串非常长而复杂的二进制数字,所以需要Base64编码方便传输(每6位二进制数字对应一个可打印字符),同时也有可读性一个原因
公钥(Public Key):如其名,公钥是公开的,任何人都可以获取到。公钥主要用于加密信息或者验证数字签名。
私钥(Private Key):私钥是保密的,只有产生这对密钥的用户才能拥有。私钥主要用于解密信息或者创建数字签名。
公钥和私钥是一对,通过数学方式关联起来的两把钥匙。用公钥加密的信息只能用对应的私钥解密,用私钥加密的信息也只能用对应的公钥解密。
通信双方需要交换各自的公钥进行加密。 A发送信息给B,需要有用B的公钥进行加密,B收到后用自己的私钥进行解密。反之,当B向A发送信息时,会用A的公钥进行加密,A收到后用自己的私钥解密。
数字证书
类似一个人的身份证,数字证书里将包含公钥和该网站的身份信息,颁发证书的机构,证书的有效期等等。
Https通信基于SSL/TLS协议简化的通信步骤
当用户通过浏览器访问一个https网站时,首先浏览器会向服务器发送一个建立安全连接的请求,这也被称为"客户端hello"。
作为响应,服务器会发送一个“服务器hello”,其中包含选择的加密算法、服务器的数字证书以及其他一些需要的信息。
浏览器会验证服务器的数字证书:确认证书没有过期,由一个可信赖的证书颁发机构(CA)签发,且证书申请者(与颁布者)的公钥和私钥配对正确。
浏览器随机产生一串数据作为"会话密钥",然后使用服务器提供 的公钥加密这串数据,再发送给服务器。
服务器接收到这串加密数据后,用自身的私钥解密得到这串"会话密钥"。
服务器和浏览器之间使用这串"会话密钥"作为对称加密的密钥,然后之后的通信将都使用这串密钥进行加密,从而保证传输的内容安全性。
如果是用户需要提交数据给服务器,浏览器会使用这串"会话密钥"来加密数据,服务器收到后使用同样的"会话密钥"进行解密。
上述过程简化了许多细节,现实中这个流程由多种加密算法、认证机制以及其他安全措施组成,以确保通信的安全。
通俗地描述
当你(用户)在浏览器中输入一个HTTPS的网址,浏览器就像是你的代理,它会向网站(服务器)发出一声:“我要访问你,并且我想保持私密!”
网站回应:“没问题,我们可以私密聊天,但你得知道我是谁,这是我的身份证(服务器的公钥证书)”。
浏览器检查该"身份证"是否有效,如果有效,它会选择一个秘钥(一串随机数)并用这个"身份证"将秘钥加密,并将其发回给服务器。
服务器用自己的私钥解密这个秘钥,然后他们两者之间的所有信息交换都会使用这个加密的秘钥进行加密。
所以,即使有人在网络上截取了他们的消息,也无法读懂,因为他们没有秘钥,无法解密。
可以发现,客户端不直接用服务端的公钥进行加密,因为计算量太大了!所以用一个经过公钥加密后的随机串作为双方后面通信的加解密秘钥。因此https通信用到了对称加密和非对称加密
SSL/TLS
SSL是Secure Sockets Layer(安全套接字层),TLS是Transport Layer Security(传输层安全),TLS是SSL的标准化后的升级版。
工作在应用层和传输层之间,对数据进行加密

浙公网安备 33010602011771号