网站LOGO
逐暗者的麦田
页面加载中
3月29日
网站LOGO 逐暗者的麦田
一个java软件攻城狮
菜单
  • 逐暗者的麦田
    一个java软件攻城狮
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    知识点整理(二)——https
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    按住ctrl可打开默认菜单

    知识点整理(二)——https

    shellingford · 原创 ·
    程序人生 · java知识点整理http
    共 2456 字 · 约 4 分钟 · 318
    本文最后更新于2023年08月05日,已经过了237天没有更新,若内容或图片失效,请留言反馈

    https

    HTTP 有以下安全性问题:

    • 使用明文进行通信,内容可能会被窃听;
    • 不验证通信方的身份,通信方的身份有可能遭遇伪装;
    • 无法证明报文的完整性,报文有可能遭篡改。

    HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。

    通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

    加密

    对称密钥加密

    对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥。

    • 优点:运算速度快;
    • 缺点:无法安全地将密钥传输给通信方。

    非对称密钥加密

    非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥。

    公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。

    非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。

    • 优点:可以更安全地将公开密钥传输给通信发送方;
    • 缺点:运算速度慢。

    HTTPS 采用的加密方式

    上面提到对称密钥加密方式的传输效率更高,但是无法安全地将密钥 Secret Key 传输给通信方。而非对称密钥加密方式可以保证传输的安全性,因此我们可以利用非对称密钥加密方式将 Secret Key 传输给通信方。HTTPS 采用混合的加密机制,正是利用了上面提到的方案:

    • 使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性;
    • 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key)

    认证

    通过使用 证书 来对通信方进行认证。

    数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。

    服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。

    进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。

    完整的流程

    证书是用来防止中间人攻击的。

    完整性保护

    SSL 提供报文摘要功能来进行完整性保护。

    HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。

    HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。

    HTTPS 的缺点

    • 因为需要进行加密解密等过程,因此速度会更慢;
    • 需要支付证书授权的高额费用。

    中间人攻击

    针对SSL的中间人攻击方式主要有两类,分别是SSL劫持攻击和SSL剥离攻击

    SSL劫持攻击

    SSL劫持攻击即SSL证书欺骗攻击,攻击者为了获得HTTPS传输的明文数据,需要先将自己接入到客户端和目标网站之间;在传输过程中伪造服务器的证书,将服务器的公钥替换成自己的公钥,这样,中间人就可以得到明文传输带Key1、Key2和Pre-Master-Key,从而窃取客户端和服务端的通信数据;

    但是对于客户端来说,如果中间人伪造了证书,在校验证书过程中会提示证书错误,由用户选择继续操作还是返回,由于大多数用户的安全意识不强,会选择继续操作,此时,中间人就可以获取浏览器和服务器之间的通信数据。

    应对这种攻击,通常采用的是可信证书,例如只信任CA之类签发的证书。

    SSL剥离攻击

    这种攻击方式也需要将攻击者设置为中间人,之后见HTTPS范文替换为HTTP返回给浏览器,而中间人和服务器之间仍然保持HTTPS连接。由于HTTP是明文传输的,所以中间人可以获取客户端和服务器传输数据

    应对这种攻击,通常采用HSTS(HTTP Strict Transport Security,HTTP强制传输安全)。
    声明:本文由 shellingford(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    发一条! 发一条!
    博客logo 逐暗者的麦田 一个java软件攻城狮
    MOEICP 萌ICP备20237379号 ICP 沪ICP备13037081号-2,沪ICP备13037081号-1,沪ICP备13037081号-3 又拍云 本站由又拍云提供CDN加速/云存储服务

    🕛

    本站已运行 2 年 216 天 3 小时 17 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    逐暗者的麦田. © 2021 ~ 2024.
    网站logo

    逐暗者的麦田 一个java软件攻城狮
     
     
     
     
    壁纸