安全发送/检索数据

本文关键字:检索 数据 安全 | 更新日期: 2023-09-27 17:58:58

我希望能够以半安全的方式发送和检索数据,而不必使用HTTPS或SSL。

目前,我正在使用像这样的腌MD5哈希摘要将数据发布到服务器(以防止参数篡改):

http://www.myserver.com?name=John&摘要=ed076287532e86365e841e92bfc50d8c

但我也想在客户端加密纯文本数据,然后在服务器上将其解密回纯文本,这样数据看起来像:

http://www.myserver.com?name=sK5E4Ld4sw5ie&摘要=ed076287532e86365e841e92bfc50d8c

实现这一目标的好方法是什么?

安全发送/检索数据

最简单的方法是在客户端中包含预共享密钥(例如AES),在服务器上也包含预共享的密钥。或者,使用RSA密钥对(客户端上的公钥,服务器上的私钥),但是RSA加密的参数会占用更多空间。

发送摘要(MD5或其他)将无法防止篡改,除非可以对其进行验证(通常是根据服务器知道的签名和证书)。否则,攻击者可以很容易地同时修改请求的实体和URI中的摘要。你当然需要用你的私钥在摘要上签名,假设事先知道你的公钥来验证它。

尽管你说你不想使用SSL/TLS,但你真的应该研究一下,因为自制的加密货币很少像你想要的那样安全(参见你自己的例子)。这应该为您提供完整性(无篡改)和机密性(加密),前提是您适当使用密钥和/或证书。

如果你想加密实体,你可以考虑:

  • PGP/OpenPGP/GPG(您可以在带有BouncyCastle的C#中使用它)
  • XML加密(可能还有XML DSig)
  • HTTPsec(尽管我不确定它是如何"被证明"的,我也不知道有任何C#实现)