0

假设我想加密一些字符串......说用户电子邮件地址。在这种情况下,例如,将电子邮件地址加密为字符串是一个好主意:

"sometext:" + email

(并且在解密时,删除额外的前缀)

而不仅仅是电子邮件地址本身?我担心的是,如果我们将加密字符串暴露在某个地方,那么某人可能能够生成足够多的加密字符串(及其纯文本版本)并能够自行设计加密的电子邮件地址。

想法?

4

4 回答 4

1

攻击您知道全部或部分明文的加密密文称为已知明文攻击。现代密码,例如 AES,是针对此类攻击的证明。如果您愿意,您可以添加额外的盐,但如果您使用像 AES 这样的良好的现代密码,它不会真正提高安全性。

于 2012-09-12T12:48:21.497 回答
1

这种技术已经被称为盐渍并且非常普遍。

如果您对盐保密,请将其与输入混合并将其输入到加密哈希函数中,您应该是安全的。不过,您应该确保自己在做什么,尤其是在进行加密时!使用 sha1 加盐的示例:

saltedHash = sha1(salt + input)

您现在可以存储生成的哈希。如果您需要将给定的输入与存储的输入进行比较,请执行相同的过程并比较加盐的哈希值。

站点说明:如果您将其用于 a MAC,则不阅读有关 Secret Prefix/Suffix Hashes 和练习加密的内容就不应继续进行。

于 2012-09-12T12:25:15.910 回答
1

AES 或任何其他安全密码受到保护以免受纯文本攻击。但是,如果使用不当,您仍然可以从中检索数据。例如,当您使用流密码模式时,如果您不使用唯一的 NONCE,则可以检索纯文本。另一种检索信息的常用方法是简单地查看密文的大小。

如果您使用更常见的模式,例如 CBC 加密,那么您应该使用与随机数(对攻击者)无法区分的 IV。然后,您可以将该 IV 附加到密文中。如果你不这样做,那么攻击者可以简单地将密文的第一个字节与其他密文进行比较。如果这些是相同的,那么攻击者可能会看到一个通用名称。IV 可以防止这种情况。

再次阅读文本,您试图实现的是某种保护,以防止其他人向您发送密文,解密后可以将其解释为有效邮件。这可以通过使用 MAC 或 HMAC(使用另一个密钥)添加完整性保护或使用提供完整性保护的模式(如 GCM)来避免。这将保护您免受此类做法的影响,但不能防止重放攻击。您需要加密或验证某种唯一令牌(发件人 + 序列号)以实现针对该场景的保护。

不幸的是,仅添加那段静态文本对任何情况都无济于事。

于 2012-09-12T15:14:24.733 回答
0

这一切都取决于您将要使用的算法。如果您使用较弱的字符串,是的,无论您附加什么字符串,它仍然可以破解。

如果您使用非常强大的加密机制,这将大大增加您的安全性。

于 2012-09-12T12:20:48.160 回答