浅析 https 的安全保证原理

这些日子做一些CA证书相关的东西(csp),所以学习了很多相关知识,其中有一部分就是利用证书来进行https安全交互的知识。

在这里做一个简单的梳理和总结吧。

ca证书涉及的加密算法有很多:

比如:用于加密的经典RSA,曲线加密ECC,还有仅仅在我国使用的一般是金融行业使用的SM2(俗称国密算法,这个算法在国际上是不被承认,当然我们貌似对此不介意。)

还有用于生成指纹的:sha1算法(计算数据哈希值,比较常用的一种,不过据说有人已经破解了撒),md5,md4,hmac,等等。

其中数字证书校验有一个核心的东西就是:非对称加密,这个东西是个搞开发的基本上都明白它的思想(有点虎符的意思啊,你拿一半,我拿一半,拼一起才能用)。


下面说https:

它的整个过程就是证明我是我的过程,防止域名劫持、中间者攻击、网站假冒


步骤1:

客户端通过ssl协议向服务端发起请求,彼此确定ssl的协议版本、算法类型

client :哥,在吗?

server:在

注:ssl协议就不多说了,它是在传输层tcp协议上的封装,一种安全的全双工的可靠传输协议

步骤2:获取到了证书

client:你真是我哥吗?

server:我真是,不信我给你看我的证。


客户端获取数字证书,分析出相关的信息

client:system,它证是真的吗?

system:颁发机构是可信任的

client:算法,公钥长度,公钥数据都是啥?

假设是rsa的2048key

system:算法是rsa,key的长度是2048,key是xxxx


步骤2.1

有些网站只允许指定的用户进行访问,需要确认客户端的身份,客户端身份证书是由服务端颁发的

server:你真是我弟吗?

client:是的,我可以给你看我的证

客户端用rsa2048公钥加密发送证书到服务端,服务端用rsa2048私钥解密,验证客户端身份

server:好,你真是我弟


步骤三:

约定传输的对称加密key

client:system 为我生成一个key

system:好的,key是xxxxx

客户端用rsa2048公钥对其加密,发送给服务器

client:这是加密过的key

服务端用rsa2048私钥解析这个key

server:好的,收到了

注:这里面client不光发送key还会发送一串随机数据,server解析了key和随机数,然后用key对随机数进行加密传输给client,client解析后发现是自己发送的随机数,确认key的完整性和服务器身份


步骤四:

使用约定的对称加密key进行通信

client:xxxx

server:xxxx


这里是将整个过程分解了,实际上有些过程是一起进行的。

你可能感兴趣的:(浅析 https 的安全保证原理)