首页
社区
课程
招聘
[讨论]RC4算法暴力破解的尝试(附源码)
发表于: 2013-7-7 10:46 64625

[讨论]RC4算法暴力破解的尝试(附源码)

2013-7-7 10:46
64625

目录:
        一.命题
        二.C源码的故事
        三.望尽天涯路
        四.蓦然回首
        五.单线程与多线程性能对比
        六.附件说明

一.命题
问题来源于帖子“关于RC4算法的暴力破解问题”。新开一帖,将解决问题的过程写出来与大家探讨,同时给人一个膜拜的机会。问题肯定多多,欢迎鄙视

前段时间在弄一个目标,几乎可以肯定是某种对称加密算法,但是不能确定是哪一个。于是将一些常见的对称算法依次过了一遍,包括3-WAY、AES(RIJNDAEL)、DES/TDEA、IDEA、RC4、RC6、TEA等等。
之前对这些东西并不熟悉,学习过程中走了弯路。一开始是看一些知道的库的源码,比如cryptlib、cryptopp、OpenSSL和LibTomCrypt等。后来才发现这些库为方便使用,大都经过封装,虽然标准规范摆在那里,要从中学习算法代码的具体实现反到不合适——细节被隐藏了——让人不能抓住重点。
而且这些库都是借用了别人的代码。以DES算法为例,在我关注帖子“DES算法求助”时,仔细研究了一下。

cryptlib和OpenSSL是基于"Eric Young"的代码,cryptopp源于"Phil Karn"的des.c。在输入相同的情况下,LibTomCrypt与KARN_portable产生的key schedule完全一致。这些公开的库必须是符合DES标准的,所以同样的输入得到相同的输出。
“DES算法求助”里的算法有点另类,逆向它的加密算法后,根据DES的原理,写出了它的解密算法。没花时间去进一步研究为什么它与标准库的输出不同。

本命题可简化为:已知RC4算法Keystream的前8个字节,求对应的Key(密钥):
Keystream(Hex.): 50 35 38 62 2C 1E 0C 6F

二.C源码的故事
关于RC4攻击有很多文章可读,比如这里:http://www.wisdom.weizmann.ac.il/~itsik/RC4/rc4.html
粗略看了几篇,不得要领。回过头来尝试“暴力”。

诚如原帖楼主所言,“暴力破解”(brute-force attack),或称穷举法(exhaustive key search),效率是关键,VB在这里稍微高级了点,低级的C比较合适,有利于优化。
正好手头有RC4算法的C源码:RC4.C。来自"Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition"一书的配套光盘。
从作者"Bruce Schneier"的说明来看,它正是某人匿名公开到sci.crypt的那个东西。他在该书的RC4章节讲述了它的来源。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 5
支持
分享
最新回复 (44)
雪    币: 350
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
赞,思路清晰。拜读了 精华文~
必须好评
2013-7-7 10:56
0
雪    币: 143
活跃值: (263)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
好评 这个可以有

51年
2013-7-7 11:16
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
顶,好帖。51年无法直视。
2013-7-7 11:48
0
雪    币: 77
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
51年 什么意思?
2013-7-7 12:04
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
6
我是来mark的
2013-7-7 13:30
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
前排留名,精华文章~
2013-7-7 13:35
0
雪    币: 1919
活跃值: (901)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
8
不错不错,标记哈!
2013-7-8 04:55
0
雪    币: 167
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mark 感谢分享
2013-7-8 06:56
0
雪    币: 221
活跃值: (2311)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
谢谢分享!!!
2013-7-8 09:13
0
雪    币: 1149
活跃值: (888)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
11
谢谢!  share
2013-7-8 09:14
0
雪    币: 190
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
来顶贴的,膜拜
2013-7-8 09:45
0
雪    币: 5047
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
[QUOTE=逍遥歪经;1196169]51年 什么意思?[/QUOTE]
是指帖子中的:测试是一门单独的学科,这里并不严格,只想借此说明问题。这台机器上,在Key为8字节、各字节为75个可能和只计算Keystream首4字节的情况下,单线程需要51年,多线程也需要近23年

看帖不认真..
2013-7-8 10:31
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
[QUOTE=GeminiZane;1196456]是指帖子中的:测试是一门单独的学科,这里并不严格,只想借此说明问题。这台机器上,在Key为8字节、各字节为75个可能和只计算Keystream首4字节的情况下,单线程需要51年,多线程也需要近23年

看帖不认真..[/QUOTE]

使用GPU会快很多
GPU在迸发线程上是CPU无法相比的
2013-7-8 10:59
0
雪    币: 627
活跃值: (663)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
15
2013-7-8 14:34
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
GPU的密码学应用貌似最开始是搞heash的……
2013-7-8 15:03
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
可以写个GPU版的,然后加到word密码破解上来……
2013-7-8 15:13
0
雪    币: 69
活跃值: (41)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
18
mark,留名~
2013-7-8 16:43
0
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
思路不错,支持一个
2013-7-8 18:35
0
雪    币: 10960
活跃值: (2920)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
20
我一年无法直视?
2013-7-8 19:44
0
雪    币: 144
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
太厉害了,谢谢你的分享
2013-7-8 22:33
0
雪    币: 11075
活跃值: (17602)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
楼主是高手啊,来支持一下了
2013-7-8 23:11
0
雪    币: 11
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
mark 膜拜大神~~~~
2013-7-9 08:34
0
雪    币: 204
活跃值: (1908)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
好文章,必须顶起. 感谢楼主分享
2013-7-9 16:27
0
雪    币: 538
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
Mark了,,慢慢看
2013-7-11 10:37
0
游客
登录 | 注册 方可回帖
返回
//