HTTPS & TLS 原理
2022-06-14 14:15:39 11 举报
HTTPS & TLS 底层原理
作者其他创作
大纲/内容
1. 服务器、ca机构 各有一对非对称加密密钥2.客户端电脑内置了ca的公钥3. ca 使用私钥给服务器签发证书(证书里面有一系列信息的签名)4. 客户端使用内置的公钥验证证书获取服务器的公钥5. 客户端使用认证成功后的公钥加密对称加密的密钥发给服务器6. 服务使用私钥解密获取对称加密密钥7. 后面使用对称加密通信
使用电脑内置的ca 公钥验证证书是否合法
如何防止身份冒充1.冒充服务端服务端有权威机构签名的数字证书,证书中带有公钥。所以:1.窜改公钥会破坏数字证书,客户端验证证书有效性便可确认;2.就算窃取到证书后伪装成服务端与用户通信,没有私钥就无法解密出随机数n3,也就无法利用n1,n2,n3生成对话秘钥,没有对话秘钥也就无法解密用户发送的数据包。2.冒充客户端对于有权限限制的服务,往往会要求验证客户端身份,这时一般使用客户端证书。由于客户端证书要发送到服务器进行验证,所以要么通信过程是加密的,要么客户端证书是动态的(即限制冒充者使用窃听得到的证书的使用时间,例如30秒,这样在冒充者真正窃取到证书的时候,多半证书已经过期了。服务器会知道这个动态的算法,所以能实时验证证书。例如U盾。),否则证书是可以伪造出来或者复制下来的。作者:Joey_Xu链接:https://www.jianshu.com/p/992bad24412e来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
服务器
证书认证和交换对称加密密钥阶段
发送加密后的密钥
后面的请求都使用对称加密
请求数据使用对称加密数据
从证书获取CRL分发点地址
获取 CRLs 文件
使用证书里面的公钥加密 兑成加密密钥(上一步生成的密钥)
发送加密数据
客户端
下发证书
HTTPS 中间人攻击前提 【以下某一条符合则可】1、客户端已经信任伪造证书颁发机构(安装其根证书)2、攻击者控制了合法证书颁发机构(控制CA服务器,为自己颁发证书)3、客户端程序禁止了显示证书错误告警信息 (程序员个人能力有限)4、攻击者已经控制客户端,并强制其信任伪造证书 (强制安装中间人的根证书)https://www.csdn.net/tags/OtDaUg3sNzYyODgtYmxvZwO0O0OO0O0O.html
返回证书
响应数据
接受请求
1. 证书为了安全的把服务器的公钥发给客户端2. 服务器的公钥是为了安全的把客户端生成的对称加密密钥发送给服务器
返回 CRLs 文件
CA
证书非法,客户端报警提示
使用服务器公钥加密对称加密密钥发给服务器
返回证书,证书里面包含服务器的 公钥
CA证书和CA指令 证书和CA功能概述https://blog.csdn.net/CHYabc123456hh/article/details/121752788
接受证书
响应证书
对称解密
client
响应数据使用对称加密
发起请求
结束对称加密密钥交换
验证不通过,相应的操作
浏览器
对称解密数据
请求证书
假设1. 前期证书认证通过2. 客户端 生成 对称加密密钥, 使用证书中的公钥加密 前面生成的公钥 发给服务器3. 中间人拦截请求,自己再生成一个对称加密的密钥 使用证书中的公钥加密 发给服务器 (替代客户端发的 对称加密密钥)中间人不能解开客户端的对称加密密钥,就不能篡改客户端的请求信息服务器要鉴别中间人就使用 用户认证(登录)
把自己的公钥 和 域名有效期等给ca,ca使用字自己的私钥下发证书(签名)
正式通信阶段
客户端验证服务器证书是否有效(CRLs文件也是需要安全性保护的,攻击者可以修改CRLs文件,更改了里面的证书吊销状态,让一张不安全的证书被身份校验成功)
使用服务器的私钥解密数获得对称加密的密钥
1. 服务器生成非对称密钥对(公钥,私钥)
使用内置的 ca 公钥校验文件是否正确
server
流程1. 客户端获取服务器证书2. 获取证书中的 CRL分发点地址3.访问 CRL分发点 地址,获取CRLs 文件列表4. 使用客户端内置的 ca 公钥验证文件5. 验证服务器证书是否被吊销
1. 公钥加密,私钥解密2. 私钥加密,公钥解密(又叫私钥签名,公钥验签)3. 公钥加密 不能使用 公钥解密4. 私钥加密 不能使用 私钥解密
证书合法,生成对称加密的密钥
接受 CRLs文件
https 最后使用对称加密方法加密数据,前期的所有操作都是为了安全的传输对称加密的密钥,对称加密的密钥由客户端生成,使用服务器的公钥加密后发给服务器(公钥加密只能使用私钥解密,所有只有服务器能解出密钥)
简化 TLS前提是 服务的私钥必须保密 & 服务器的公钥不能通过网络获取,必须使用无网内置到客户端1. 服务器生成 非对称加密钥对2. 客户端先内置 服务器 公钥3. 客户端生成对称加密密钥(随机密钥)4. 使用 服务器 公钥加密 生成的对称加密密钥 发送给服务器5. 服务器使用私钥解密数据 获取 对称加密密钥6. 后续所有通信基于 对称加密完成
验证通过,校验服务的证书是否有效
返回证书 (包含服务器公钥)
收藏
收藏
0 条评论
回复 删除
下一页