首页
社区
课程
招聘
[求助]关于RC4算法的暴力破解问题
发表于: 2013-4-22 18:59 15585

[求助]关于RC4算法的暴力破解问题

2013-4-22 18:59
15585
现有3对原文和密文数据对应如下:

原文               密文(16进制数据)
你                 94D6
你你               94D6FC81
你你你你           94D6FC81E8FDC88C

已知算法为RC4,求解RC4密钥!
不知道密钥长度、范围等信息,密钥可能为数字字母符号等等。

实在不行我觉得可以设计一个暴力破解程序,也许能碰碰运气吧!
目前我正在写一个VB的暴力破解,等写好了代码再发上来,不过我觉得VB的效率可能不太高,看看哪位大牛能设计一个更快的RC4暴力破解程序代码,或者除了暴力破解还有没有其它更好的方法呢?欢迎讨论!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
数据太短太少了
明显会有多解
2013-4-22 22:09
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
3
猜想一下, 下列原文/密文是否正确?  
原文   密文(16进制数据)
你你你 94D6FC81E8FD
2013-4-23 15:27
0
雪    币: 627
活跃值: (663)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
4
RC4的算法虽然简单,但Ron Rivest的设计确实精巧。作为一种Stream Cipher,由本例最长的一组原文+密文很容易得到它的keystream:
原文(ANSI String):     "你你你你"
原文(Hex):             C4 E3 C4 E3 C4 E3 C4 E3
密文(Hex):             94 D6 FC 81 E8 FD C8 8C
Keystream(Hex):         50 35 38 62 2C 1E 0C 6F

Keystream是与原文无关的,由Key经KSA(key-scheduling algorithm)算法生成一个256字节的"State Array"(char S[256]),然后从中按PRGA(pseudo-random generation algorithm)算法挑选出特定字节构成加密/解密时的序列。
对一个特定的Key,S是确定的,PRGA产生的Keystream也就固定了。也就是说Key与S是一一对应的,从一个给定的S可以逆出Key。所以实践中要求每个Key只能使用一次,否则被认为是不安全的。
比如,就算不知道本例的Key,我们也可直接用Keystream来正确加密/解密字节数≤8的序列:
原文(ANSI String):     "我我我我"
原文(Hex):             CE D2 CE D2 CE D2 CE D2
密文(Hex):             9E E7 F6 B0 E2 CC C2 BD

显然这是危险的!

现在的问题在于Keystream太短,只有8字节,约束条件太少,很可能是多解。即很可能穷举出某个Key,但仅Keystream的前8个字节符合本例。

以一个RC4算法的具体实例来说明。



图中:Key="Secret",原文="Attack at dawn"。(取自http://en.wikipedia.org/wiki/RC4页面的"Test vectors"节。)
Key对应的Keystream为:
Keystream(Hex):         04 D4 6B 05 3C A8 7B 59 41 72 30 2A EC 9B ...

现在我们只知道"State Array"中的8个值,剩下的值不确定,同时还不能确定这些值在数组中的位置(idx)。那么Key就有相当的不确定性。
或许可以假定一个或几个值的位置而推算出其它值的位置,这个“假定”就已经带来了不确定性。
上传的附件:
2013-6-24 12:10
0
雪    币: 627
活跃值: (663)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
5
折腾数日,“独上高楼”,望不尽的“天涯路”。而“蓦然回首”,叹“却在灯火阑珊处”。
不是运气,也非偶然,乃缘于近在咫尺的必然。

密钥:"12345" (0x31, 0x32, 0x33, 0x34, 0x35)
2013-7-3 15:19
0
游客
登录 | 注册 方可回帖
返回
//