如果小提琴手 2 可以通过 HTTPS 解密所有调用,SSL 的意义何在

本文关键字:SSL 调用 小提琴手 可以通过 HTTPS 解密 如果 | 更新日期: 2023-09-27 18:35:45

不久前,我在这里问了一个问题,关于如何隐藏我的http请求调用并使它们在我的应用程序中更安全。我不希望人们使用小提琴手 2 来查看呼叫并设置自动应答器。每个人都告诉我去SSL,电话将被隐藏,信息将保持安全。

我购买并安装了SSL证书并设置了所有内容。我启动了Fiddler 2并运行了一个测试应用程序,该应用程序连接到https Web服务以及连接到https php脚本。

Fiddler 2 不仅能够检测到这两个请求,而且还能够解密它们!我能够看到所有信息,回到第四,这让我想到了我的问题。

如果SSL对安全性没有任何影响,那么拥有SSL的意义何在?无论有没有SSL,我都可以看到所有信息,并且仍然设置了自动响应器。

我是否缺少 .NET 中某些内容来更好地隐藏通过 SSL 进行的调用?

编辑

由于我收到的一些答复,我正在为这个问题添加一个新部分。如果应用连接到 Web 服务进行登录,该怎么办?应用向 Web 服务发送用户名和密码。然后,Web 服务将数据发送回应用,说明登录数据良好或错误。即使通过SSL,使用提琴手2的人也可以设置一个自动响应器,然后应用程序被"破解"。我了解在调试中查看数据是多么有用,但我的问题是究竟应该怎么做才能确保 SSL 连接到它请求的数据。基本上是说不可能有中间人。

如果小提琴手 2 可以通过 HTTPS 解密所有调用,SSL 的意义何在

这里涵盖了以下内容: http://www.fiddlerbook.com/fiddler/help/httpsdecryption.asp

Fiddler2依赖于"中间人"方法来拦截HTTPS。 对于您的网络浏览器,Fiddler2声称是安全的Web服务器,而对于Web服务器,Fiddler2模仿Web浏览器。 为了伪装成Web服务器,Fiddler2动态生成HTTPS证书。

本质上,您手动信任 Fiddler 提供的任何证书,如果您手动接受来自与域名不匹配的随机人的证书,情况也是如此。

编辑:有一些方法可以防止Fiddler/中间人攻击 - 即在自定义应用程序中,使用SSL,可以要求使用特定的证书进行通信。对于浏览器,它们具有 UI 来通知用户证书不匹配,但最终允许此类通信。

作为显式证书的公开可用示例,可以尝试使用 Azure 服务(即与适用于 Azure 的 PowerShell 工具一起使用)并使用 Fiddler 嗅探流量。由于显式证书要求,它失败。

您可以将 Web 服务设置为需要客户端认证才能进行 SSL 身份验证,以及服务器端。 这样,Fiddler 将无法连接到您的服务。 只有具有所需证书的应用程序才能连接。

当然,然后你会遇到如何在应用程序中保护证书的问题,但无论如何,你的用户名和密码现在遇到了这个问题。 真正想要破解您的应用程序的人可以使用Reflector,甚至可以对与客户端证书关联的私钥进行内存搜索。

没有真正的方法可以做到100%防弹。 这与电影业在保护DVD内容方面遇到的问题相同。 如果您有能够解密DVD和播放内容的软件,那么有人可以在该软件运行时进行内存转储并找到解密密钥。

一般来说,SSL/TLS的目的是让偶尔使用Wireshark的窃听者无法看到你的有效载荷。提琴手/打嗝意味着您与系统进行了交互。是的,这是一个非常简单的交互,但它确实需要(一个)系统受到损害。

如果你想通过使这些MITM程序在这样的基本级别上无用来增强安全性,你需要客户端证书身份验证(2路SSL)并固定服务器和客户端证书(例如,要求只有特定的证书对通信有效)。您还将使用各方的公钥对网络上传输的有效负载进行加密,并确保私钥仅驻留在它们所属的系统上。这样,即使一方(Bob)遭到入侵,攻击者也只能看到发送给Bob的内容,而看不到Bob发送给Alice的内容。然后,您将获取加密的有效负载并使用可验证的证书对数据进行签名,以确保数据未被篡改(顺便说一句,关于是先加密还是先签名有很多争论)。最重要的是,您可以使用像sha2之类的东西的多次传递来散列签名,以确保签名是"发送的"(尽管这在很大程度上是一个模糊的步骤)。

当您

不控制(一个)通信系统时,这将使您在安全方面尽可能合理地实现。

正如其他人提到的,如果攻击者控制系统,他们控制RAM并可以修改内存中的所有方法调用。