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