【问题标题】:Does it make any difference of the order Hashing and Encrypting in terms of security?就安全性而言,哈希和加密的顺序有什么不同吗?
【发布时间】:2013-03-01 09:06:56
【问题描述】:

我正在用 java 实现一个密码库程序。我已经编写了一个用于加密的三重 DES 和一个用于散列的 SHA256。

我的问题是,如果我首先对原始数据(密码)进行哈希处理,然后对其进行加密,或者首先对数据(密码)进行加密,然后对加密数据进行哈希处理,会有什么不同吗?我最关心的是,它是否会在安全性方面做出任何重大改变。

谢谢

【问题讨论】:

  • 这对security stackexchange来说可能是个好问题
  • @oleksii 谢谢,我也会在那里尝试机会。
  • 因为这是一个密码保险库,我假设您试图将您的密码以明文形式取回?在这种情况下,你想用哈希实现什么?
  • @PeterElliott 问题是,密码存储在 XML 文件中(存储在本地),XML 文件将加密数据保存在其中。哈希 (MAC) 仅用于确保任何密码已被攻击者更改。
  • 原始哈希算法不是 MAC 方案,不会提供 MAC 的安全性。此外,您为什么使用 3DES 而不是 AES?

标签: security encryption hash cryptography


【解决方案1】:

根据您的评论,您不想仅使用散列作为消息验证码。有适合此应用程序的基于散列的 MAC(适当地称为HMACs)。在这种情况下,您可能想要使用 HMAC-SHA256。另请记住,您的 MAC 需要一个单独的密钥(使用相同的密钥进行加密,MAC 是一个很大的禁忌)。

但就您的问题本身而言,您的问题归结为 Encrypt-then-MAC vs MAC-then-Encrypt。根据Crypto.SE answer,最好的做法是先加密后 MAC,只要您确保对密文的所有内容进行 MAC 处理,包括 IV 和算法标识符(如果您允许使用 3DES 以外的加密算法)。你得到密文和明文的完整性,并且不必经过解密的过程来验证明文。

【讨论】:

  • 您绝对有权使用单独的密钥进行加密和 MAC。可能我会采纳您的建议,即使用 AES 来加快性能。另外我只是找到另一个链接Encrypt-then-MAC我认为“Encrypt-then-MAC”案例似乎适合我的案例。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 2011-12-17
  • 2010-09-28
相关资源
最近更新 更多