首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XTEA:纯文本中的模式

XTEA:纯文本中的模式
EN

Cryptography用户
提问于 2015-09-14 12:25:50
回答 1查看 1.1K关注 0票数 2

我正在使用XTEA加密我存储在数据库中的密码。(我需要以后能够解密这些密码,以便登录到另一个系统。)但是现在我注意到了一些事情:如果我用不同的密钥解密密码,我仍然可以在纯文本中看到一些模式。我并不担心对XTEA加密的攻击,我担心的是对使用加密密码的其他系统的攻击。

例如:

代码语言:javascript
复制
Password A = "111222111"
Password B = "222111222"

我用一些密钥加密它们,然后用另一个密钥解密它们。输出内容类似于:

代码语言:javascript
复制
A: qqqwwwqqq
B: wwwqqqwww

(使用q和w表示可读性,它实际上是两个难以辨认的字符。)正如您所看到的,对于弱密码,这可以显示大量信息,从而使对这些密码的暴力或字典攻击变得更容易:

  1. 密码的长度。
  2. 密码中相同字符的模式。
  3. 不同密码中的模式。

这里的假设是:

  1. 攻击者可以访问多个加密密码和盐类。
  2. 攻击者无法访问加密密钥,且此密钥足够强。
  3. 攻击者只对纯文本感兴趣。获取加密密钥可以是一种手段,但不是目的。
  4. 攻击者已经对代码进行了解压缩,混淆不会有任何好处。
  5. 用户是白痴,密码就像上面的例子一样脆弱和相似。

我的问题是:

  1. 这能被认为是我计划中的一个弱点吗?或者我可以通过告诉用户使用更强的密码来洗手吗?
  2. 这是XTEA的正常行为,还是我正在使用的实现有什么问题?
  3. 是否有其他更适合于此的加密方法?
EN

回答 1

Cryptography用户

回答已采纳

发布于 2015-09-14 13:22:42

XTEA是一种分组密码。它需要一个分组密码工作方式。与块密码操作模式一起,您可以生成一些安全的内容。为此,您至少需要一个IV,因为否则可能会将相同的密码(针对不同的用户)加密到相同的值。或者,如果将每个字符分别加密,则将相同的字符值加密到相同的密文中。

分组密码本身就是一个PRP,一个伪随机排列。给定一个键,它将始终将一个明文转换为与其关联的密文。如果您在例如块茶中使用XTEA,这将没有什么不同;您将始终得到相同的密文。

你可以做以下事情:

  1. 为您的密码和可能的输入值定义字符集;
  2. 使用上述字符集对密码进行编码。
  3. 将密码压缩到一定的最大长度,例如64个字节,以允许传递短语(要么存储长度,要么使用无效字符,如00十六进制)
  4. 生成一个8字节IV (用于64位分组密码,如XTEA;IV要求可能取决于操作方式和块大小)
  5. 使用IV和密钥加密编码和填充的密码
  6. 存储区IV加密文本

这应该是安全的,只要您选择的操作模式是安全的。您可能希望为此使用经过身份验证的加密(例如GCM),但这并不是真正的要求。

通常最好不要存储密码,但在您的情况下,这似乎是一个要求。您可能需要检查运行时环境中是否存在可用的安全密码错误。如果没有使用XTEA的紧迫参数,则应该使用AES。

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

https://crypto.stackexchange.com/questions/29154

复制
相关文章

相似问题

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