目录
加密的手段
1.对称加密
只用一个密钥key,加密和解密使用同一个密钥
明文+key -> 密文
密文+key -> 明文
特点:计算起来快速
2.非对称加密
需要两个密钥,公钥(pub)和私钥(pri)
明文+pub -> 密文 密文+pri -> 明文
或者
明文+pri -> 密文 密文+pub -> 明文
HTTPS的基本工作过程
使用对称密钥
但是客户端自己生成的密钥需要通过网络传输发送给服务器
这个过程黑客就很有可能会被将其截获
所以只能想办法对key也进行一层加密
引入非对称加密
客户端希望把自己的key安全传给服务器,不被黑客拿到
于是就有一个方法:服务器生成一对公钥(pub)和私钥(pri)
公钥交给客户端,然后客户端把通过公钥加密的key传给服务器,服务器再通过私钥进行解开
这样黑客就算拿到key之后,没有私钥进行解开,也无法得到真正的key是啥
为什么不直接用公钥和私钥对数据进行加密,而是对key进行加密,再用key去解开数据呢
因为对称加密的速度快,成本低,而非对称加密的速度慢,成本高,所以就只用非对称加密对key进行加密,对数据的加密和解密还是使用key
就有了以下流程:
但是安全也不是绝对的,黑客还是有办法去得到你的key
服务器有一对非对称密钥pub1和pri1
在客户端向服务器发送了一个对公钥的请求后,客户单把公钥传给客户端的过程中如果经过黑客
黑客就会自己生成一对非对称密钥pub2和pri2
然后把自己的pub2传给客户端,客户端拿到pub2后使用pub2对自己的key加密,然后传给黑客
黑客就能用pri2将key解开,然后再用客户端的pub1将其加密发送给服务器
这样就能神不知鬼不觉的拿到数据并进行篡改了
于是就有权威机构搞了一个证书防止这种情况
证书
要想去弄一个服务器就得去申请一个证书(一个数据包)
这个证书的内容有:
服务器的url,证书的过期时间,颁布证书的机构,服务器自己的公钥,和加密后的签名等等
这个加密的签名,是针对证书的所有属性,计算一个校验和,再由证书的颁布机构使用手里的私钥,对这个签名进行加密
客户端或者服务器中的电脑中都配置了这个证书的公钥,在拿到证书后可以对其进行解密
于是有了以下的传输
这个证书中包括了服务器的公钥,在客户端拿到证书后,就拿系统带的公钥将其解密,拿到服务器的公钥
那么黑客是不是也能用系统的公钥将证书中的公钥进行解密,然后把服务器的公钥替换成自己的呢
答案是不行的,黑客可以将证书进行解密,但他没有权威机构的私钥,无法在解开后再对其进行加密
这样就能防止黑客对其中的内容进行篡改了