Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保护聊天应用程序的安全_C#_Cryptography_Network Security - Fatal编程技术网

C# 保护聊天应用程序的安全

C# 保护聊天应用程序的安全,c#,cryptography,network-security,C#,Cryptography,Network Security,我正在为WindowsPhone8制作一个安全的聊天应用程序 我计划使用ASMXSOAP服务,并决定使用公钥加密技术来加密数据,但我对网络安全非常陌生 我的做法是: 一旦用户注册,就会在服务器上生成公钥/私钥对 然后将公钥发送回手机应用程序客户端和所有将要发送的数据 从客户端发送到服务器的数据将由客户端上的公钥加密 并通过服务器上的私钥进行解密 现在我想知道的是,对于服务器将发送给客户端的响应,这些响应将如何加密和解密 如果服务器上的私钥用于加密响应,那么任何人都可以对其进行解密,因为“公钥”是

我正在为WindowsPhone8制作一个安全的聊天应用程序

我计划使用ASMXSOAP服务,并决定使用公钥加密技术来加密数据,但我对网络安全非常陌生

我的做法是:

  • 一旦用户注册,就会在服务器上生成公钥/私钥对
  • 然后将公钥发送回手机应用程序客户端和所有将要发送的数据 从客户端发送到服务器的数据将由客户端上的公钥加密 并通过服务器上的私钥进行解密
  • 现在我想知道的是,对于服务器将发送给客户端的响应,这些响应将如何加密和解密

    如果服务器上的私钥用于加密响应,那么任何人都可以对其进行解密,因为“公钥”是公钥

    这是否意味着我必须生成两个公钥-私钥对,一代 在服务器上,在客户端上生成一代


    一对将加密和解密发送到服务器的数据,另一对(在客户端生成)将在从服务器发送数据作为响应时执行相同的操作。

    如果您担心消息“在飞行中”被截获,我建议您将API放在HTTPS服务器上。这样所有内容都会被编码

    HTTPS的功能与您描述的非常相似,只是它发生在幕后,您的应用程序不需要知道任何有关它的信息

    超文本传输协议安全(HTTPS)是一种用于在计算机网络上进行安全通信的通信协议,在互联网上的部署尤为广泛。从技术上讲,它本身并不是一种协议;相反,它只是将超文本传输协议(HTTP)分层的结果在SSL/TLS协议之上,从而将SSL/TLS的安全功能添加到标准HTTP通信中。HTTPS的主要动机是防止窃听和中间人攻击。


    是的,您可以在客户端上生成密钥对,并将客户端的公钥发送到服务器。但如果使用公钥加密来加密消息,则(a)仅限于小消息——1024位RSA密钥加密的字节数小于128,以及(b)因为公钥加密比对称密钥加密(如AES加密)成本更高,所以要在性能上付出代价

    现在,您有了一种从客户端向服务器秘密发送内容的方法,通过使用服务器的公钥加密,您可以在客户端生成一个随机对称密钥,然后秘密地将其发送到服务器。现在,双方都有一个对称密钥,它可以加密越来越大的消息,而且效率更高,特别是在网络上电话

    例如,查看AES和经过身份验证的加密模式,其中消息不仅是机密的,而且是防篡改的


    你的问题是,一旦有人看到了服务器公钥,他们就可以很容易地模拟客户端,但这是实现你自己的加密的风险。^)在大学项目之外,如果要求你不要使用SSL,你就不应该实现你自己的加密。

    考虑使用TLS,它可以为你完成所有这些复杂的事情。因为我这是一个大学项目,我被要求自己实现安全性,而不是使用SSL!!然后看看现有的协议,如TLS、OTR、CurveCP或Noise。请务必编辑你的问题,以明确你有人为的限制,因为家庭作业。是的,当然!!我会记住这一点。谢谢你的指导,我想还要知道,假设我自己实现了完整的sncryption系统,但是这个完整的请求可以被嗅探器复制,从而产生重复的消息。我应该如何删除它?这是一个很好的问题。看看TLS如何防止重播攻击,例如。Cf。