HTTPS协议

    技术2022-07-10  100

    HTTPS协议

    加密

    加密分为两种方式一种是对称加密(比如DES,AES),一种是非对称加密(RSA)。

    在对称加密算法中,加密和解密使用的密钥是相同的。在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。一把是作为公开的公钥,另一把是作为谁都不能给的私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。公钥加密只能私钥解密,私钥签名只能公钥验签

    数字证书

    ​ 不对称加密也存在同样的问题,如何将不对称加密的公钥给对方呢?一种是放在一个公网的地址上,让对方下载;另一种就是在建立连接的时候,传给对方。但是,作为一个普通网民,你怎么鉴别别人给你的公钥是对的。会不会有人冒充网站呢?

    ​ 这个时候就需要权威部门的介入了,就像每个人都可以说自己是谁,但是有公安局盖章的,就只有户口本,这个才能证明你是你。这个由权威部门颁发的称为证书(Certificate)。

    证书内容:

    公钥证书的所有者,就像户口本上有你的姓名和身份证号,说明这个户口本是你的证书的发布机构和证书的有效期,这个有点像身份证上的机构是哪个区公安局,有效期到多少年。

    2.问题又来了,有人假冒权威机构颁发证书呢?就像有假身份证、假户口本一样该怎么办呢?

    ​ 生成证书需要发起一个证书请求,然后将这个请求发给一个权威机构去认证,这个权威机构我们称为 CA( Certificate Authority)

    CA

    ​ 将证书请求发给权威机构,权威机构会给这个证书卡一个章,我们称为签名算法。问题又来了,那怎么签名才能保证是真的权威机构签名的呢?当然只有用只掌握在权威机构手里的东西签名了才行,这就是 CA 的私钥。

    ​ CA 用自己的私钥给网站的公钥签名,就相当于给网站背书,形成了网站的证书。

    ​ 又有新问题了。要想验证证书,需要 CA 的公钥,问题是,你怎么确定 CA 的公钥就是对的呢?所以,CA 的公钥也需要更牛的 CA 给它签名,然后形成 CA 的证书。要想知道某个 CA 的证书是否可靠,要看 CA 的上级证书的公钥,能不能解开这个 CA 的签名。就像你不相信区公安局,可以打电话问市公安局,让市公安局确认区公安局的合法性。这样层层上去,直到全球皆知的几个著名大 CA,称为 root CA,做最后的背书。通过这种层层授信背书的方式,从而保证了非对称加密模式的正常运转。

    https过程

    ​ 客户端给网站发送的时候,用网站的公钥加密。而网站给客户端发送消息的时候,使用客户端的公钥。

    一、HTTPS 协议的总体思路:

    ​ 因为非对称加密在性能上不如对称加密,所以https将两者结合了起来。公钥私钥主要用于传输对称加密的秘钥,而真正的双方大数据量的通信都是通过对称加密进行的。 图片来自刘超趣谈网络协议

    这个过程除了加密解密之外,其他的过程和 HTTP 是一样的,过程也非常复杂。

    ​ 大部分的场景,只包含了 HTTPS 的单向认证,也即客户端验证服务端的证书。也可以在更加严格安全要求的情况下,启用双向认证,双方互相验证证书。

    重放与篡改

    一、重放

    ​ 有了加密和解密,黑客截获了包也打不开了,但是它可以发送 N 次。这个往往通过 Timestamp(时间戳) 和 Nonce 随机数联合起来,然后做一个不可逆的签名来保证。

    ​ Nonce 随机数保证唯一,或者 Timestamp 和 Nonce 合起来保证唯一,同样的,请求只接受一次,于是服务器多次收到相同的 Timestamp 和 Nonce,则视为无效即可。

    二、篡改

    ​ 有人想篡改 Timestamp 和 Nonce,还有签名保证不可篡改性,如果改了用签名算法解出来,就对不上了,可以丢弃了。

    注意:各大CA机构的公钥是默认安装在操作系统里的。所以不要安装来路不明的操作系统,否则相当于裸奔

    Processed: 0.010, SQL: 9