知道解密和加密的数据是否足以找到密钥?

信息安全 加密 密钥管理 算法
2021-08-25 04:40:34

假设攻击者知道加密内容、解密内容和使用的算法:他能否获得用于加密内容的密钥,还是更容易找到密钥?

我认为这在对称和非对称加密之间以及不同算法之间可能会有所不同。那么,如果我唯一需要保密的是密钥,那么使用不同算法的这种场景有多安全?


编辑:

我问这个问题是因为我刚刚阅读了 SpiderOak 常见问题解答,据我所知,它们既不存储用户密码,也没有存储从用户密码派生的加密密钥。但是,当用户登录网页时,他们需要确保用户的密码是正确的。

如果他们不存储密码并且不存储密钥,那么检查密码是否正确的唯一可能是解密一些已知的加密数据并检查结果是否正确。

例如,在注册时,他们可能会加密数据CHECK,在登录时,他们可能会从输入的密码中获取密钥,然后对加密后的密码进行解密CHECK并查看它是否是CHECK. 如果不是,则密钥不正确,因此密码也不正确。

他们还有其他方法可以做到吗?

1个回答

您指的是已知明文攻击,您试图通过比较数据样本的加密和未加密版本来找出密钥。幸运的是,目前使用的几乎所有主要加密算法,包括 AES,都不知道容易受到这种攻击。就弄清楚密钥而言,知道解密到什么是完全没用的(除非,也许,您的方法是尝试暴力破解密钥。)

虽然 Spideroak 在技术上可以使用您描述的方法(即加密已知的示例文件),但根据他们的网站,他们实际上使用了一种称为散列的过程。散列是一种非常常见的密码存储技术;事实上,几乎所有处理用户登录的网站都使用它。这是一个数学过程,将一些数据(例如密码)作为输入,并生成一个唯一的、固定长度的字符串作为输出。计算一些数据的散列很容易,但考虑到散列,很难弄清楚原始数据是什么。但只要您提供相同的数据,哈希值将始终相同。

根据 Spideroak 的说法,当您创建一个帐户时,您的浏览器会计算您密码的 bcrypt 哈希值并将该哈希值发送给 spideroak。据推测,当您登录时,spideroak 会将哈希发送回您的浏览器,您的浏览器将获取您输入的任何内容的哈希以检查它是否匹配。