首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当纯文本和密文都已知时,是否有可能计算加密密钥?

当纯文本和密文都已知时,是否有可能计算加密密钥?
EN

Security用户
提问于 2021-04-14 19:22:57
回答 4查看 5.6K关注 0票数 18

我实施了一个认证系统,其工作方式如下:

  1. 成功登录后,服务器获取客户端的用户名并使用AES-256加密.
  2. 这个密文存储在客户端的浏览器中,当客户想要做一些需要登录的事情时,这个密文被发送到服务器。服务器解密密文并获取登录客户端的用户名。

攻击者无法入侵客户端的帐户,因为他/她不知道加密密钥,因此攻击者是否知道用户名并不重要。但是,我担心如果客户端的浏览器被暴露,攻击者将同时访问密文和纯文本(用户名)。这是否允许攻击者在已知密文和明文的情况下“计算”加密密钥?因为该密钥用于所有客户端,所以如果公开该密钥,整个系统就会被毁。

EN

回答 4

Security用户

回答已采纳

发布于 2021-04-15 13:50:50

在回答您的主要问题时,据我们所知,AES256在可预见的将来是安全的。但是,您的身份验证方案有几个缺点。

首先,如果发送令牌的任何请求被破坏,或者用户安装了恶意的插件,可以从他们的浏览器中获取加密的用户名,则该帐户将永远不可用。实际上,您正在创建用于身份验证的令牌,该令牌永远无法更改,这是与用户名的1:1关系。如果被破坏,拒绝访问的唯一方法是关闭帐户并强制用户使用不同的用户名创建一个新帐户。

一种更好的方法是在用户验证并将其存储在数据库中时生成一个随机令牌,或者生成一个随机值并将其作为令牌进行加密。然后,如果帐户被破坏或用户希望‘注销’,您可以删除该令牌并生成一个新的令牌。

如果您的加密密钥被泄露或被破解,攻击者可以像您系统中的任何用户一样执行任何操作。使用基于随机令牌的方法,他们必须知道用于为每个用户生成令牌的随机部分。攻击者必须能够访问您的数据库和加密密钥。

票数 25
EN

Security用户

发布于 2021-04-14 19:55:18

不是的。攻击者无法从明文和加密文本获取加密密钥,因为AES能够抵抗已知的明文攻击。请参阅关于密码SE的答案中的详细信息。

我建议你重新考虑一下你的设计。将用户名保密会导致许多问题。例如,如果用户需要报告问题,用户如何才能告诉用户名如果它是秘密的?如果管理员需要更改用户权限,如果用户名是机密的,负责人员如何告诉管理员需要更改哪些用户?诸若此类。我建议不要加密用户名。

实际上,这里有一个XY问题。实际上,应该使用身份验证令牌来了解用户的实际身份。在这种情况下,不需要对用户名进行加密,因此不需要有关AES和已知明文攻击的问题。

票数 24
EN

Security用户

发布于 2021-04-15 23:22:08

问:“为什么?”

有许多免费的、开源的、经过战斗测试的认证系统已经到位。

除非你是密码工程方面的专家(我们在这里的事实表明并非如此),请不要发明你自己的系统。

只是为了自学代码而乱搞代码是很棒的,但不要走得更远。

票数 10
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/248321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档