Mar*_*tin 17 encryption wcf message certificate
我有一个WCF服务和客户端,它将部署到几家公司(数百家).一些公司将在他们的网络中运行该软件,一些公司将通过Internet运行它(办公室的WCF服务器,另一个的WCF客户端).
我们想要加密WCF服务器和客户端之间的通信.我们没有必要使用WCF安全性来验证客户端/订户,因为我们有自己的用户名/密码登录,客户端将使用这些登录服务器来登录服务器.
简而言之,我们想要一个简单的解决方案,其中加密仅基于共享密钥,在我们的例子中是用户登录的用户名/密码.我知道这不会提供最好的加密,但我们愿意交换一些安全性,以使软件更容易部署.
这可能吗?
*使用"真实"证书,我指的是从证书颁发机构购买的证书,而不是我自己创建/自签名的证书.
mar*_*c_s 17
如果你想加密传输上的消息(这是一个非常好的主意!),发送者(客户端)和服务器之间必须有一些共享知识.这可以是硬编码的,但这根本不是一个好主意 - 如果这种"共同共享"知识遭到破坏,攻击者就可以破译并阅读您的所有消息.
此外,由于绝对不推荐练习,因此在WCF中不支持任何类型以简化共享密钥.你是自己的 - 你必须自己完成100%的方式.
以安全的方式交换公共共享密钥的唯一可行方法是使用证书.没办法,抱歉.证书甚至不必用于用户身份验证或任何东西 - 但它在呼叫者和服务之间建立共享秘密,从而允许呼叫者以这样的方式加密消息,只有预期的接收者才能实际解密和使用他们.
所以我真的没有看到任何方法可以绕过你的服务器上的证书 - 不需要在每个客户端上,而是在你的服务运行的每个服务器上.
渣
PS:如果你真的想调查"硬编码共享秘密"方法,你需要考虑这个问题:
通常,这种方法有两方面:
总而言之,这真的不是微不足道的 - 任何简单的东西都不值得被称为"安全".
如果你看看你将要做的所有工作 - 使用WCF内置证书机制会不会更容易?
体面安全称职是很难-那么,为什么不充分利用什么可用的,而不是自己做所有的工作,或者更糟:想出一个半生不熟的解决方案,是很容易破解,你可以很容易地以明文发送的一切...... ..不要低估处理即使是最基本的安全方案所需的代码的复杂性和数量 - WCF为您完成所有这些 - 免费且可靠且安全地使用它 - 使用它!你不会后悔的!