名词解释
- TLS: Transport Layer Security
- SSL: Secure Sockets Layer
理论基础
信息摘要算法
- 根据一段信息计算出一串数字,但是由这串数字没办法还原出原来的信息
- 等于是这串数字由这段信息产生,可以表示这段信息,称为这段信息的摘要
- 主要有以下应用:
- 传输文件时验证文件有无损坏:传输时不仅传文件,还传送文件的摘要,传输完了之后根据文件重新计算摘要,并和传过来的摘要对比,如果不一样说明文件损坏。
- 降低数字签名的性能开销:数字签名时如果直接对原信息签名,开销太大。可以先计算出原信息的摘要,再对摘要进行签名,也可以达到签名的目的。
- 常用的算法有:
- MD5: Message Diagest
- SHA256: Secure Hash Algorithm
对称加密和非对称加密
- 对称加密
- 一个秘钥既能加密又能解密
- 特点是计算开销小,因此真正的通信一般用的都是先采用一些办法发送秘钥,再用对称加密进行通信
- 非对称加密
- 有两个秘钥,称为一个秘钥对,其中一个加密的密文只有对应的另一个秘钥能解密
- 特点是计算开销大,因此一般不用来对通信进行加解密,而用在发送秘钥、认证等方面
- 秘钥对一般分为公钥和私钥。公钥公开,私钥由自己保留不可泄露。因此私钥能用来证明自己的身份,并由此延伸出以下两个方面的应用:
- 公钥加密的信息能确保只有私钥拥有者才能解密,因此能确保信息准确发送到接收方。
- 如果信息能够用公钥解密,则说明这个信息肯定是私钥拥有者加密的,就证明这个信息是私钥拥有者承认的。这就叫数字签名。
- 最常见的 RSA 算法,RSA 是三个人名字的首字母
数字证书
- 为了解决通信双方的身份认证问题。比如你登录百度,你怎么知道你登录的网站就是百度?域名和 IP 都有可能被中间人代理。
- 方法如下:
- 由权威的 CA 机构(Certificate Authority 证书权威)发布机构自己的公钥,这个公钥会内置在所有计算机的系统内部,很难篡改
- 网站去 CA 机构申请数字证书,并向 CA 机构提供自己的相关信息(主要是网站自己的公钥)。 CA 机构对网站进行认证之后,先对网站信息做摘要,然后用 CA 机构自己的私钥对摘要加密。这个过程就叫数字签名,数字签名 + 网站信息 = 数字证书
- 浏览器上网时,对方网站,用系统内置的 CA 机构发布的公钥