首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能找到一个AES密钥给定的部分密钥,密文,初始化向量和加密方式?

是否有可能找到一个AES密钥给定的部分密钥,密文,初始化向量和加密方式?
EN

Cryptography用户
提问于 2022-02-24 18:42:14
回答 2查看 835关注 0票数 1

详情如下:

  • 部分密钥:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011
  • 初始化向量:E898EF8E91F8C9B201E6E29DF87EE152
  • 密文块1:14B8D1412766A8520BACE4598F8AFAEE
  • 密文块2:7E687A49015FA6F1B914635325A6361B
  • 密文块3:8AD191394EF79CEC4B5A256313632CD4
  • 密文块4:8BB4D49F3FA7A917CDF02ECCAA8C4765
  • CBC模式无填充
  • 字符集:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890⌴‛~@#$%^&*(){}[]+=-_<>,.?/!:\;’|"
  • 字符集信息:范围[32,127],ASCII编码,每个字符是8位

我的想法是,不知何故,您需要用已知的32位密钥对每个密文块进行解密,然后开始工作。问题是第一个密文块有一个无与伦比的密钥(XXX .)

因此,除前32位外,您将得到所有已知字符的纯文本。

EN

回答 2

Cryptography用户

回答已采纳

发布于 2022-02-24 23:10:36

可以实现32位密钥空间的搜索吗?

在我的机器上,使用AES-NI的OpenSSL可以在CBC模式下每3秒对64字节块进行61510120次迭代.

运行openssl speed -evp AES128查看您的机器。

这使得2^{26}密钥空间保持了3秒。一个人需要2^{6} =64*3秒才能找到编码良好的关键候选人。

为你的事业创造三个功能;

  • P = \operatorname{AES-Dec-CBC}(k, IV, C),其中C是密文块,P是当前密钥k of C下的解密明文。
  • k =\operatorname{GetNextCandidateKey(current)}这个简单的增量当前并以二进制形式创建一个键k = current\mathbin\|1100\cdots011。您需要将其转换为二进制文件,以适应标准的加密库。
  • b = \operatorname{CheckTheMessage}(P)。此函数获取明文并检查字节是否在此范围内。如果不返回0,则返回1

现在有了这3种功能;

代码语言:javascript
复制
current = -1

while current < 2^32 do:
    k = GetNextCandidateKey(current)
    P = AES-Dec-CBC(k, IV, C)
    b = CheckTheMessage(P)

    if b == 1
        print(current)
    current++
票数 3
EN

Cryptography用户

发布于 2022-02-24 19:52:10

是否有可能找到一个AES密钥给定的部分密钥,密文,初始化向量和加密方式?

有时候这是可能的。有时这是不可能的。这取决于你已经知道了多少钥匙。

在你的例子中,你似乎只知道33位的密钥。所以,你应该能用暴力强迫它找出剩下的钥匙。

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

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

复制
相关文章

相似问题

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