AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 77219279
Accepted
Victor Lucas Mazzotti
Victor Lucas Mazzotti
Asked: 2023-10-03 09:59:37 +0800 CST2023-10-03 09:59:37 +0800 CST 2023-10-03 09:59:37 +0800 CST

如果我在网页上实现类似 SSL 的安全逻辑,是否与使用 SSL 相同?

  • 772

假设我的页面没有 SSL。我们假设有以下步骤:

  1. 用户向我的网页发出请求(我们称之为 www.mypage.com)。

  2. 客户端 JS 创建一个SYMMETRIC KEY。

  3. 客户端 JS 向我的后端页面发出请求,请求我的服务器的PUBLIC KEY 。

  4. 客户端 JS 对获得的PUBLIC KEY中之前生成的SYMMETRIC KEY进行加密。

  5. 客户端 JS 将加密数据发送到服务器。

  6. 服务器对接收到的数据进行解密。

  7. 服务器开始发送/读取在步骤 2 中生成的对称密钥中加密的所有后续信息。

  8. 客户端 JS 也开始发送/读取在步骤 2 中生成的对称密钥中加密的所有后续信息。

据我所知,即使攻击者监听了步骤1到步骤8的每一条信息,他们也无法解密任何内容,用户是安全的。

你们同意我的观点吗?我对么?如果是,我们是否可以假设浏览器中的本机 SSL 存在是因为“写得不好”的页面?

security
  • 1 1 个回答
  • 36 Views

1 个回答

  • Voted
  1. Best Answer
    Steffen Ullrich
    2023-10-03T10:16:28+08:002023-10-03T10:16:28+08:00

    TLS 旨在保护客户端和服务器之间的通信免受中间人攻击者拦截和修改通信的影响。这可能是 ISP,也可能是公共 WiFi 热点的所有者,也可能是您的 LAN 或 WiFi 热点中的攻击者,该攻击者使用 ARP 或 DNS 欺骗重定向您的流量。让我们看看这个建议的方法在这种情况下是如何工作的。

    客户端 JS 生成对称密钥。

    这个客户端 JS 首先来自哪里?希望不是来自服务器,因为不能保证攻击者没有修改它。但假设这是通过某种安全连接传输到客户端的......

    客户端 JS 向我的后端页面发出请求,请求我的服务器的公钥。

    由于对服务器的此请求未受到拦截和修改的保护,中间人攻击者可以简单地用自己的公钥替换公钥并将其发送到客户端。由于客户端没有对公钥进行任何验证(即没有对服务器进行身份验证),因此它将接受它。

    从那时起,客户端将相信与服务器交换对称密钥和加密流量,而实际上是与攻击者交换。攻击者可以解密对称密钥和流量,并以此建立自己与服务器的连接,这次使用来自服务器的原始密钥。

    总之:您缺少 TLS 的一个关键点 - 服务器身份验证。这使得中间的主动人很容易突破保护。

    请注意,您的方法存在更多缺陷,例如没有前向透明度、没有消息完整性、没有重放保护。但缺少服务器身份验证是最明显也是最关键的问题。

    如果是,我们是否可以假设浏览器中的本机 SSL 存在是因为“写得不好”的页面?

    它内置于浏览器中,因为加密很容易出错,因此不要依赖用户自己进行加密。它随根 CA 作为信任锚一起提供,因为使用先前未知的远程方进行加密需要某种方式来验证该方实际上是预期的一方(您缺少的服务器身份验证),这是通过检查 TLS 中的服务器证书来完成的针对内置的受信任根 CA。

    另请参阅为什么我们不应该自己推出?为什么你不应该尝试发明自己的加密协议而应该依赖既定的标准。

    • 3

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve