一、问题由来
:
数据在传输过程中会出现:被伪造、被修改、被监听的问题
二、加密算法:
对称加密算法
:DES算法和
AES
算法
AES算法:psk(pre Shared key 预共享秘钥)
A0+psk=A1;
A1-psk=A0;
局限
:对方必须提前知道psk 否则无法进行通信
非对称加密算法
:RSA
生成一对秘钥对(一个秘钥 公开了一部分)
公钥加密私钥解 私钥加密公钥解
公钥加密私钥解:
A0+Public key——>(加密算法) A1
A1-Private key——>(解密算法) A0
A0 和公钥public Key 一起运算使用加密算法运算,拿到加密后的数据A1,加密后的数据A1和私钥private key一起使用解密算法运算,就能还原数据。 (可以解决被监听的问题)
需提前知道对方的公钥,若公钥被很多人知道,则无法解决被伪造的问题;
私钥加密公钥解:
用私钥加密对方用公钥解密,可以解决被修改被伪造的问题,但无法解决被监听的问题,
需提前将自己的公钥告诉对方,但其他人也会知道
三、问题解决:
先获取到对方的公钥,然后用对方的公钥加密 另一个新的 psk,对方用私钥解开就可得到对称加密算法的秘钥psk, (由于其他人没有私钥,所以无法得到对称加密算法的秘钥psk),若双方都拥有psk,就可以使用对称加密算法。
以psk为秘钥,AES算法来加密解密,就可以解决被伪造、修改、被监听的所有问题了。
但…..无法确定双方是否安全即无法完全确定对方是自己需要数据传输的对象。
信任链关系
判断第一次拿到的公是否真的是自己需要的?
第三方的信任机构(公安局的私钥)加密对方的公钥,我得到加密后的公钥,得到加密后的数据用公钥(公安局的公钥)解,解开后得到对方的公钥。
在在这个过程中只有公安局可以加密数据,也就是
签名算法
。
我拿到签名后的数据,用公安局的公钥去对比数据是否和原来数据时一致的,也就是
校验算法
。
浏览器浏览网站,浏览器信任CA机构,CA机构认证了一些网站,则访问这些网站时,会显示,这些网站时受信任的,
解决信任链:出现的CA
若开一家网站,一定要到CA机构进行认证,证明通过 CA机构会办法数字证书(公钥和私钥的秘钥对),证书是CA机构使用自己的私钥签发的,当你用一个浏览器浏览这个网站,若这个浏览器信任CA机构,则会显示这个网站安全,
参考:
https://www.bilibili.com/video/av38845557?from=search&seid=11307129653269710443
安全套接字
(Secure Socket Layer,SSL)协议是Web浏览器与Webserver之间安全交换信息的协议
提供两个主要的安全服务:鉴别与保密
当计算机连接到使用ssl的网站时,计算机的网页浏览器会要求网站确认自己的身份,网页服务器将向计算机发送其SSL证书的副本,SSL证书是一种小型证书, 用于验证网站的身份,它的作用是让您的计算机知道您访问的网站时可信的,然后,计算机的浏览器对其进行检查,如果可信,将给网页浏览器发送一条消息,之后,网页服务器将发回一个确认作为回应,这样SSL会话就可以继续了,完成这些把步骤,计算机和网页就可以交换加密的数据。
HTTPS加密过程:
-
客户端请求服务器获取
证书公钥
-
客户端(SSL/TLS)解析证书(无效会弹出警告)
-
生成随机值
-
用
公钥加密
随机值生成
密钥
-
客户端将
秘钥
发送给服务器 -
服务端用
私钥
解密
秘钥
得到随机值 -
将信息和随机值混合在一起
进行对称加密 -
将加密的内容发送给客户端
-
客户端用
秘钥
解密信息