Linux网络:HTTPS协议
文章目录
- 一,HTTPS原理
- 二,加密方式
- 2-1对称加密
- 2-2 非对称加密
- 2-3 混合加密
- 2-4 中间人攻击
- 三,证书
- 3-1 HTTPS 证书是什么
- 3-2 数据签名
- 3-3 CA 认证
- 3-4 简单总结
一,HTTPS原理
你可以把HTTP
通信 想象成两个人在大街上大声聊天:路人都能听到(信息可能被窃听),任何人都可以插嘴冒充(信息可能被篡改或伪造)
而 HTTPS
通信 就像两个人在一个 密室里,用密码本对话:建立密室(TLS
握手),客户端(你)和服务器(网站)先商量好用哪种加密方式,服务器出示 身份证(数字证书),证明“我真的是 www.xxx.com
,不是冒牌货”。
客户端检查身份证(证书是否可信、是否过期、域名是否匹配)。确认身份后,客户端生成一个“对话密钥”
,交给服务器(用公钥加密),用同一把钥匙对话(对称加密),之后你们都用这把钥匙加密和解密消息,路人就算偷听,也只能听到乱码。
总结:HTTPS
用 证书 + 加密,保证了:谁在跟你对话(身份认证),说的内容别人看不懂(加密),对话不会被篡改(完整性)
二,加密方式
2-1对称加密
一把钥匙开锁:加密和解密都用同一把钥匙,发送方用钥匙锁箱子,接收方用同一把钥匙开箱子。
- 例子:
你和朋友约定一个密码本(密钥):写“我今晚吃饭吃泡面” → 用密码本加密 → 朋友用同一本密码本解密,微信或者支付宝通信:用户的账号密码、支付金额都用同一个“临时密码本”加密发送到服务器
发送方用密钥
𝐾对明文 𝑃 进行加密 → 得到密文C
接收方用同一个密钥
𝐾对密文解密 → 得到原文 𝑃
- 优缺点
加密/解密速度快,适合大数据
密钥必须安全传输,否则别人也能解密 比喻:想象你和朋友用同一把锁锁信箱,然后互相传递。只要钥匙安全,你们通信就是私密的。
大致上面那个图一样HTTPS(TLS)
握手完成后,会话密钥保存在浏览器内存的 TLS
栈中,用于加密和解密 HTTP
请求与响应,浏览器不会把密钥写到磁盘或日志里,只存在运行时内存中
直接抓包解析密钥是不可能的网络上的抓包工具,只能看到密文,没有会话密钥,抓到的数据无法解密,必须获取内存中会话密钥,你需要用 调试工具或内存分析工具 直接读取浏览器进程内存,难度高,而且现代浏览器和操作系统有安全机制防止随便访问进程内存
2-2 非对称加密
核心思想:使用 一对密钥
公钥(Public Key):可以公开,用于加密或验证签名
私钥(Private Key):必须保密,用于解密或生成签名
公钥加密 → 私钥解密
私钥签名 → 公钥验证
公钥像银行提供的保险箱,任何人都可以把钱放进去,私钥像银行的钥匙,只有银行能打开保险箱拿到里面的内容
发送方用接收方 公钥 加密消息,接收方用 私钥 解密消息
安全性:即使有人截获密文,也无法解密,因为没有私钥
通过这种方式每个人都有自己的通信规则,但是只有自己能解开别人发过来的信息
2-3 混合加密
什么是混合加密?
混合加密
= 非对称加密 + 对称加密结合
非对称加密
:保证密钥安全传输
对称加密
:高效加密大量数据
你和银行想互传大量信件,银行给你一个保险箱(非对称加密),你把一个临时密码本(对称密钥)放进去,银行拿钥匙打开,接下来,你们用这个临时密码本写信,速度快又安全
HTTPS
中的混合加密流程
为什么要混合加密:当我们要使用对称加密时,会因为要发送一个密钥给客户端,但是这个密钥有被黑客截取的风险,所以我们先通过非对称加密将密钥加密安全传输给客户端,客户端再使用密钥和服务端进行堆成加密,实现了既有非对称加密的安全性,又有对称加密数据传输的高效性
非对称加密慢 → 不适合加密大量数据
对称加密快,但密钥传输有风险 → 需要非对称加密安全传输
- 结合优点:
非对称加密 = 安全传输密钥
对称加密 = 高速数据加密
- 形象比喻:
非对称加密 = 保险箱锁住临时密码本
对称加密 = 用密码本写信
两者结合 = 既安全又高效
总结:混合加密就是 TLS
使用的策略
- 核心公式:
握手阶段
:非对称加密(传会话密钥)
通信阶段
:对称加密(加密实际数据)
它保证了 安全性
+ 高性能
2-4 中间人攻击
MITM 攻击的理论步骤:
- 拦截通信:攻击者位于客户端和服务器之间,拦截客户端发起的
HTTPS
请求
- 伪装服务器:攻击者生成自己的公钥/私钥对,向客户端发送伪造公钥(代替服务器的公钥)
- 客户端加密会话密钥:客户端用攻击者公钥加密生成的会话密钥,发送给“服务器”,实际上攻击者能解密
-
攻击者解密得到会话密钥:攻击者用自己的私钥解密会话密钥,攻击者现在掌握对称密钥 → 可以解密/篡改所有数据
-
转发给真正的服务器:攻击者用服务器公钥加密同一会话密钥(或协商新的),双向通信继续,但攻击者在中间完全透明
三,证书
3-1 HTTPS 证书是什么
HTTPS
证书 是一个数字文件,作用像网站的“身份证”,用来证明网站(比如 example.com
)是真实的,防止有人冒充。它让浏览器和网站之间的通信安全(加密),没人能偷看或篡改数据。
通俗比喻:证书就像你去银行办业务,银行出示一张“营业执照”,证明它是正规银行。执照上有“公安局”盖的章,告诉你它没被伪造。
HTTPS
里的作用:告诉浏览器:这个网站是我要访问的真网站,提供“公钥”给浏览器,用来加密数据(后面会讲),确保通信安全,比如你在网站输入密码,不会泄露。
3-2 数据签名
数据签名是证书里的“防伪章”
,确保证书内容(比如网站名字、公钥)没被任何人偷偷改过,网站把自己的信息(像名字 example.com
和一把公钥)交给一个可信机构,这个机构把信息“压缩”
成一个独特的“指纹”
(用一种叫哈希的数学方法,比如 SHA-256
),机构用自己的“秘密钥匙”
(私钥)给指纹加密,生成一个“签名”
,贴在证书上浏览器收到证书后,用机构的“公开钥匙”
(公钥)解开签名,检查指纹。如果指纹对得上,说明证书没被改过。
通俗比喻:像你在淘宝买东西,卖家寄来一个包裹,上面有顺丰的防伪封条(签名)。你用顺丰的“验证器”
(公钥)检查封条,确认包裹没被打开过。如果有人改了包裹内容,封条就对不上。
为什么重要?防止坏人伪造证书,假装是 example.com
,偷你的密码。
例子:你访问 https://example.com
,浏览器检查证书的签名,确保是真网站。
在 HTTPS
里签名保护证书的真实性,让浏览器相信网站的公钥可以用来加密数据
3-3 CA 认证
CA
(证书颁发机构)是一个可信的“认证机构”
,像“公安局”
一样,负责给网站发证书并盖章(签名)。它确保网站是真实的,不是假冒的。
怎么做的?
- 网站(比如
example.com
)向CA
申请证书,提交自己的名字和公钥。 CA
检查网站是不是真的(比如确认example.com
属于申请者)。CA
用自己的私钥给证书签名,生成一个可信的证书(像server.crt
)。- 浏览器用
CA
的公钥(预装在浏览器或电脑里)验证证书的签名,确认网站身份。
通俗比喻:
CA
像“公安局”
,给正规网站发“身份证”
(证书)。你用公安局的公章(CA 公钥
)检查身份证,确认网站不是假的,如果一个假网站给你个伪造的身份证,章不对,浏览器就会警告(“证书不受信任”)
- 为什么重要?
确保你访问的是真网站,比如 example.com
而不是黑客的假网站。
例子:你访问 https://bank.com
,CA 认证保证这是真的银行网站。
- 在
HTTPS
里:CA
认证让浏览器信任证书,进而信任网站的公钥,用来安全交换加密密钥。
3-4 简单总结
数据签名:证书的“防伪章”
,用哈希(SHA-256
)+ 私钥加密,确保证书没被改,像包裹上的封条,浏览器用 CA
公钥检查。
CA 认证:可信机构签发证书,证明网站身份真实,像公安局发的身份证,浏览器用 CA
公钥验证。
HTTPS 里的作用:签名确保证书可信,CA
认证确认网站身份,共同建立安全通信。