密码学
1.证书及密钥的概念
数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。
最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA(例如中国各地方的CA公司)中心签发的证书,也可以由企业级CA系统进行签发。
一般证书分有三类,根证书、服务器证书和客户端证书。根证书,是生成服务器证书和客户端证书的基础,是信任的源头,也可以叫自签发证书,即CA证书。服务器证书,由根证书签发,配置在服务器上的证书。客户端证书,由根证书签发,配置在服务器上,并发送给客户,让客户安装在浏览器里的证书。
对称加密:例如平时给文件加密,加密和解密用的同一密码,即对称加密。
非对称加密:加密时用一个密码,而解锁时需要用另一个密码,即非对称加密。目前很流行的非对称加密算法是RSA算法,它是基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
公钥:公钥是公开的,用来传输对方的随机密钥,只有通过私钥才能解密,这时就只有双方知道密钥了,从而达到安全传输的目的。
私钥:自己保留,只有通过私钥才能解密公钥加密的数据,对于私钥的使用可以设置密码。
2.通信过程
下面以最常见的单向认证为例,简述一下通信过程:
①客户端向服务器发送请求
②服务器将包含公钥的证书通过明文发送给客户端
③客户端通过根证书验证服务器证书是否有效
④如果有效,客户端生成一个随机密钥,也叫对称加密密钥,使用服务器的公钥进行加密传输
⑤服务器通过私钥解密客户端传输的对称加密密钥
⑥这时只有服务器和客户端知道这个对称加密密钥,双方可以进行对称加密传输
公钥证书是什么
https在建立通信时首先会采用非对称加密的方式传输数据
(这里的传输数据一般是随机生成的key 这个key用于后续的对称加密)
服务端会生成一对秘钥, 公钥和私钥
公钥交给客户端 私钥留给服务端自己
客户端在拿到公钥后 如何确保拿到的公钥就是想要访问的服务端的公钥呢?
这时就需要有一个公认的权威机构来证明, 公钥是来自指定的服务端的公钥
认证机构的工作
认证机构会生成一对秘钥, 公钥和私钥
公钥证书的生成包括了两部分内容:
1、数字签名
2、服务器公钥
其中数字签名的生成过程是:
服务器公钥 经过数字摘要算法 生成数字指纹
把生成的数字指纹 在用认证机构的私钥加密 生成数字签名
https中客户端验证公钥证书的过程
服务器将公钥证书发送给客户端 客户端验证公钥证书 从而确保公钥的合法性
客户端取出提前内置在手机内部的认证机构的公钥
用认证机构的公钥去解密公钥证书里的数字签名 从而得到数字指纹
客户端对公钥证书的服务器公钥进行 数字摘要算法 从而生成数字指纹
对比客户端自己生成的数字指纹(第3步)和解密得到的数字指纹(第2步)是否一致 如果一致则公钥证书验证通过 就可以进行接下来的握手步骤了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DDUP!