我正在为Windows Phone 8制作一个安全的聊天应用程序。
我打算使用ASMX SOAP服务,我决定使用公钥加密技术来加密数据,但我对网络安全性一无所知。
我的方法是:
现在我想知道的是,对于服务器将发送给客户端的响应,如何加密和解密?
如果服务器上的私钥用于加密响应,那么任何人都可以解密它,因为“公共”密钥是公开的。
这意味着我必须生成两个公钥 - 私钥对,一代 在服务器上和客户端上的一代。
一对将加密和解密发送到服务器的数据,而另一对(在客户端生成)将在服务器响应时发送数据时做同样的事情。
答案 0 :(得分:0)
如果您担心“在飞行中*被截获的邮件”,我建议您将API放在HTTPS服务器上。这样一切都会被编码。
HTTPS会执行与您描述的内容非常相似的内容,除非它在幕后发生,您的应用程序不需要了解它。
安全超文本传输协议(HTTPS)是一种通过计算机网络进行安全通信的通信协议,在Internet上进行了特别广泛的部署。从技术上讲,它本身并不是一种协议;相反,它是在SSL / TLS协议之上简单地分层超文本传输协议(HTTP)的结果,从而将SSL / TLS的安全功能添加到标准HTTP通信。 HTTPS的主要动机是防止窃听和中间人攻击。
答案 1 :(得分:0)
是的,您可以在客户端上生成密钥对,并将客户端的公钥发送到服务器。但是,如果使用公钥加密来加密消息,则(a)仅限于小消息 - 1024位RSA密钥加密少于128个字节,以及(b)将支付性能,因为公钥加密比对称密钥加密,例如AES加密。
既然您有办法从客户端向服务器秘密发送内容,通过使用服务器的公钥加密,您可以在客户端上生成随机对称密钥,并将其发送到服务器,偷偷。现在双方都有一个对称密钥,它可以加密更多,更大的消息,并且效率更高,特别是在手机上。
例如,查看AES和经过身份验证的加密模式,其中消息不仅是保密的,而且是防篡改的。
您遇到的问题是,一旦有人看到服务器公钥,就很容易冒充客户端,但这可能会导致您实施自己的加密。 :^)在大学项目之外,你被要求不使用SSL,你不应该实现自己的加密。