C# 连接到SSL加密网站的安全性如何?

C# 连接到SSL加密网站的安全性如何?,c#,webclient,C#,Webclient,在客户可以使用我的应用程序之前,我使用WebClient执行安全帐户检查。但我担心的是“使用HTTPS协议连接到使用SSL证书的网站是否可以防止MATM攻击并使整个通信加密?” 换句话说:像Wireshark这样的程序是否能够像使用普通HTTP请求一样以纯文本形式获取请求和响应?是否有能力改变发送和接收的数据包?以更改我的应用程序行为或其他 [注意]我不是说让我的应用程序被盗版,因为我知道没有办法摆脱这种命运。,只要双方都正确实施了协议,并且我假设WebClient得到了正确实施。 这意味着,

在客户可以使用我的应用程序之前,我使用WebClient执行安全帐户检查。但我担心的是“使用HTTPS协议连接到使用SSL证书的网站是否可以防止MATM攻击并使整个通信加密?”

换句话说:像
Wireshark
这样的程序是否能够像使用普通HTTP请求一样以纯文本形式获取请求和响应?是否有能力改变发送和接收的数据包?以更改我的应用程序行为或其他


[注意]我不是说让我的应用程序被盗版,因为我知道没有办法摆脱这种命运。

,只要双方都正确实施了协议,并且我假设
WebClient
得到了正确实施。 这意味着,即使是安装在本地设备上的wireshark也无法解密流量

如果中间的人会在途中改变数据包,另一方则无法读取它们,而通信会中断。

在您的评论中对我们的讨论作了一些澄清: 如果您的客户端未被泄露(
HTTPS
确实有效),则上述情况成立,因为您假设您的客户端会泄露自己,并使用工具通过添加虚假可信证书(需要管理员权限)欺骗您的应用程序。
,我可以建议您使用

我所知道的工具,如
Fiddler
,不能仅仅通过添加其受信任的证书来解密,从而使您的客户端更难以这种方式攻击您的应用程序,并让他们使用调试器或修补程序,因为这比实现双向ssl代理更容易


您还可以执行中所述的操作,使用需要一个特定证书的代码覆盖框架的证书验证,并忽略系统的受信任证书,这会受到
Fiddler
等工具的影响(这实现了Mark建议的功能)

< P> HTTPS对传输的数据进行加密,并通过验证正在连接的主机来防止中间人攻击。然而,对于桌面应用程序和web应用程序,用户可以使用wireshark或http代理来查看本地主机上https传输的内容

缓解此问题的一种方法是对服务器证书的指纹进行硬编码,这样您的应用程序就可以确保它所连接的服务器正在提供特定的证书

例如,如果要在本地机器上安装Fiddler并安装Fiddler根证书。您的应用程序会认为它安全地连接到服务器,但FIDDLE将在中间解密流量。如果应用程序代码查找特定的证书指纹,则可以在使用预期证书以外的证书进行连接时引发异常,从而防止在使用本地代理时传输任何数据

Wireshark始终能够看到通过网络传输的数据包,但您不一定能够看到未加密传输的内容。然而,我不是使用Wireshark的专家,所以也许这里的其他人可以解释一下


更新 好的,我想澄清一下。。。。这个问题讨论的是从桌面应用程序发送到服务器的内容的加密

让我们设计一些假设:

  • 桌面应用程序的用户控制其桌面
  • 安装在桌面上的应用程序正在使用公钥进行加密
  • 任何拥有相应私钥的人都可以解密
  • 由于用户控制他们的桌面,他们也可以在桌面上运行http代理
现在SSL(HTTPS)的工作方式是浏览器启动安全握手,此时服务器将返回公共证书,并且浏览器将尝试使用您从中获取证书的机构(godaddy、geotrust或Version等)对该证书进行身份验证

假设用户安装了fiddler及其根证书,您的桌面应用程序将连接到fiddler,并获得fiddler公共根证书,它将根据本地证书存储进行验证并认为它是可信的。然后Fiddler将联系服务器,服务器将向其发送真正的公共证书

随后,浏览器使用fiddler根公钥对来自浏览器的http请求进行加密,fiddler然后解密内容,然后使用来自服务器(mydomain.com)的公钥对其重新加密,并将请求转发给服务器,服务器随后对其进行解密和处理

详情如下:


SSL卸载()也是网络基础设施中用于卸载web服务以外的其他设备上的SSL负载的功能。这是一种形式上的中间人对内容的解密。此外,企业网络中的Instruston检测系统可以安装SSL证书,允许这些设备解密请求的内容,并检查它们是否存在表示网络攻击的行为。

进一步阅读:您的目标是什么:您是否试图让您的客户机更难拦截流量,或者你担心可能会对你的客户发起攻击吗?我想让我的客户更难拦截流量,这样某人就无法或至少难以更改响应并获得对我的应用程序的未经授权的访问,因为我的应用程序将从我的网站验证给定的用户名和密码,具体取决于收到的答复将允许访问user@argaz那又怎么样那么,如果a从可信的供应商那里购买了证书呢?不是自我签名的吗?我的回答假设你