https 自我分析

1.私钥加密后的密文,只要是公钥,都可以解密
2.公钥加密后的密文,只有私钥可以解密
3.私钥只有一个人有,而公钥可以发给所有的人

服务端   第三方机构   客户端 (下载数字证书)

数字证书(含被第三方机构的私钥加密过得服务端公钥)

## 中间人篡改 请求代理

0.客户端向服务端请求公钥,被中间人给代理。

1.中间人用假公钥替换掉服务端的公钥,将中间人的假公钥传递给客户端。

2.客户端用假公钥加密密文传递给中间人,中间人通过假私钥解密密文,然后将解密过的原文用服务端的真公钥加密,传递给服务端。

3.服务端通过公钥加密内容传递到中间人,中间人将其服务端的密文通过私钥解密后将原文篡改后用私钥加密,传递给客户端,实现篡改。

## 客户端无法分辨返回公钥的人到底是中间人还是真服务器。身份验证问题。

思路:

1.将服务器将公钥传递给客户端这个过程进行一次加密,那加密过程是否需要加密 ,成了个死循环。

## 数字证书。类似自签证书
如果直接将公钥传递给客户端方案,始终无法解决公钥被中间人调包问题。

1.将通过第三方机构用其私钥对公钥进行加密,在传递给客户端,客户端再使用第三方机构的公钥进行解密。

2. 用第三方公钥解密被第三方私钥加密过的服务端公钥,如果解密成功标识公钥没有被调包。


无数字签名 证书被调包

第三方机构给多家公司制作证书,如果中间人也向第三方机构申请证书,那么中间人就有机会对其他正常公司的正常证书进行调包。

客户端无法分辨接收的是正常公司的还是中间人的。因为无论是否为中间人都能使用第三方的公钥解密,因为公钥相同。


数字签名

//请求证书
c -> s

//取出证书中信息与证书编号,使用证书公钥协商堆成私钥
c->3rd

鉴别同一机构下不同证书

第三方机构瑞国是远端服务整个交互都会变慢。所以第三方机构验证功能存放在客户端本地。

客户端本地如何验证证书?

1.证书上写着如何根据证书内容生成证书编号。

2.防止证书编号本身被掉包,使用第三方私钥进行加密。

xx.com 网的公钥  md5 生成 证书编号。

校验md5 生成的证书是否等于解密后的第三方证书。

如此多的第三方公钥怎么跑到客户端机器中呢。

浏览器和操作系统都会维护一个权威的第三方机构列表包括公钥,客户端接收到的证书有颁发机构,客户端根据这个颁发机构的值在本地找相应公钥

思考:盗版破解版系统的危害

CA 如何颁发数字证书给服务器端的。

ca证书如何颁发给服务端的?

实际是服务端下载CA证书到服务器上

1.签署合同确认支付方式
2.准备CSR并选择确认方式
3.在线提交申请
4.确认申请颁发证书

// 客户端每次请求都会使用一个随机数选用一种算法
c ->三方机构验证 (操作系统或浏览器维护权威第三方机构列表和公钥 用于包整非对称加密过程本身的安全)->s (c->s 间用非对称加密模式)
 

猜你喜欢

转载自blog.csdn.net/weixin_41282397/article/details/86232267