【问题标题】:Best way to protect POSTED data over http?通过 http 保护 POSTED 数据的最佳方法?
【发布时间】:2012-12-31 13:21:54
【问题描述】:

我正在开发一个 Chrome 扩展程序,它会将数据发布到远程服务器。我希望在发送数据之前对其进行加密。我的服务器没有 HTTPS,所以我必须通过纯 HTTP 发送它。

我目前在 Javascript 的扩展中使用 RSA 4096 位公钥加密,并且 SHA1 对数据进行哈希处理,并通过 Ajax 发布请求发送哈希和加密数据。

这是通过 HTTP 发送的可接受的加密吗?

【问题讨论】:

  • 为了清楚起见,你对数据进行哈希处理,然后对数据+哈希进行加密,对吗?
  • 这个问题可能是 Stack Overflow 的话题,但一般问题(RSA 密钥应该有多强?)肯定会成为 crypto.stackexchange.com 的话题
  • 另见stackoverflow.com/questions/589834/…上的第一个答案
  • @Boundless 我只是将 sha1 哈希添加到加密数据的开头,我这样做的原因是我的服务器可以验证加密数据在传输过程中没有损坏。您是否建议对未加密的数据进行哈希处理并在加密之前将其添加到其中?
  • 您绝对应该像@Boundless 建议的那样加密消息和哈希。否则哈希是毫无用处的,因为攻击者只需要重新哈希他想要发送的数据。

标签: javascript google-chrome google-chrome-extension rsa public-key-encryption


【解决方案1】:

客户:散列您的消息。将哈希附加到您的消息中。加密您的消息 + 哈希。发送您的加密消息 + 哈希。
服务器:解密您的消息 + 哈希。拆分消息和哈希。散列消息。确保服务器端的哈希值与客户端的哈希值相同。如果这些不匹配,那么要么有一些比特接通了电线,要么有人改变了你的信息。 是的,RSA 4096 位公钥加密已经绰绰有余了。

【讨论】:

  • 等到他发现你不能直接使用 RSA4096 加密超过 4096 位。这就是为什么我总是避免对这些本土加密方案进行集体工程。除非您是专家,否则它无法工作,如果您是专家,您就不会在这里寻求帮助。
【解决方案2】:

好吧,维基百科告诉我们的是:

...2048 位密钥在 2030 年之前就足够了...
如果需要超过 2030 年的安全性,则应使用 3072 位长度的 RSA 密钥

所以我猜使用 4k 位加密有点偏执

【讨论】:

  • 如果维基百科这么说,那一定是真的!
  • +1,但我可能会补充说它是 WIKIpedia,所以它可能是错误的(虽然我不认为是)。
  • @user984308 这是真的,但不会有什么坏处,因为我不关心速度,只关心加密。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 2013-01-08
  • 2014-09-12
  • 2020-09-26
  • 1970-01-01
相关资源
最近更新 更多