如何确保互联网连接的安全
本文关键字:互联网 连接 安全 确保 何确保 | 更新日期: 2023-09-27 18:13:52
如果这是错误的地方,我很抱歉,但由于我通常用c#编码,我的潜在解决方案将涉及使用c#,我认为这将是最好的地方开始。
我在工作中接到一项任务,让我们的客户能够将机密记录信息从他们的办公室传输到我们的内部服务器,或者可能是一个新的基于云的服务器。
我一直相当坚定地认为,要传输上述数据,我们必须通过第三方获得SSL证书。但我想知道这是不是真的。
我研究SSL证书越多,我就越意识到它们实际上是一家公司为另一家公司担保。加密(即使是在过期的证书或自签名证书上)是有效的,并且加密与不加密的加密一样安全。当然,用户会看到令人讨厌的图标和红色屏幕,显示"嘿!这可能不安全!"但是,如果用户不访问以"https"为前缀的网站,而只访问"http"网站,那么在客户端加密数据,将其提交给我们的服务器,在服务器端解密它,反之亦然,会有什么问题呢?
加密就是加密对吗?
或者,如果创建一个WinForms应用程序,做同样的事情呢?加密数据,提交给我们的服务器,然后服务器解密。我只是不能证明每年花几千美元让Verisign或其他公司为我们颁发证书是合理的,因为99%的互联网用户(我愿意打赌)甚至懒得检查证书的有效性。
我显然想确保一切都是安全的,我并没有贬低SSL证书或保持事物安全的作用,但我只是看不出获得SSL证书背后的逻辑,如果相同类型的加密可以在内部实现更好的控制,如果你问我,更好的安全性。
有什么想法或意见吗?
您需要了解MITM攻击,这需要某种形式的身份验证来防止。
如果你只使用自签名证书,攻击者可以冒充你的服务器并发送他自己的自签名证书,而你的客户端不会知道有任何问题。
如果你只是用Javascript加密数据,攻击者可以很容易地修改Javascript,首先向他发送明文的副本。
如果你已经有一个安全的渠道来分发客户端(例如,WinForms)应用程序,你可以使用证书固定和你自己的CA,而不是支付SSL证书。但是,这需要您做更多的工作(记住要处理撤销)。
此外,为了首先安全地分发应用程序,您仍然需要SSL。(或者攻击者可以在运行之前删除您的所有加密代码)
我不确定你想发送什么样的数据,但你肯定可以完全避免使用网站来发送和接收数据。策略可以是这样的:
客户:WinForm (data entry) -> SFTP server
服务器:SFTP server -> Windows Service -> SQL Database
你只需要设置SFTP服务,并安全地部署你的WinForm和Windows service。