首页
社区
课程
招聘
我的 RSA 是怎么被破解的?
发表于: 2004-11-29 00:11 15783

我的 RSA 是怎么被破解的?

2004-11-29 00:11
15783
按照《加密解密》一书的推荐,我使用了RSA 512bit 加密,由于运算速度的关系,没有使用1024bit或更高的位数。

这个RSA 512bit加密的注册码大概顶住破解5个多月,最近发现了注册机,也就是说RSA的私钥被破解出来了。

我现在想问的是,使用RSA加密还需要注意什么东西?

除了用1024bit或2048bit外,是否还有其他漏洞可以被破解者利用?

比如,我听说可以用一些非法的数据让RSA运算解密,从而导出私钥?不知道具体是怎么做的?

选参数和进行签名时是不是还要看看被签名的内容是否合法?

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

收藏
免费 1
支持
分享
最新回复 (27)
雪    币: 231
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
太牛了吧。不过512bits确实小了点。
2004-11-29 08:57
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
3
你把发现的注册机调试一下,看看是不是用你的私钥生成的注册码~~
2004-11-29 09:13
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
4
512位的密钥如果硬件允许的话很容易破解,通过RSA Tool分解得到p和q
2004-11-29 20:08
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
665B20B46DFCC0E5C3D2471C1B38C042816417C1ABF8B47E49B5724971433B1C69AFF0821D59C1C1CC185C57161928F2D618714827689F3D0C6462F0BFDB0CF1;)
2004-11-29 22:10
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
6
谁给我一台IBM 大型机?:)
2004-11-30 12:03
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
密钥替换~
或者暴力破解
2004-11-30 12:57
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 OllyDbg 发布
密钥替换~
或者暴力破解


什么是密钥替换?不知道密钥怎么替换?
什么是暴力破解?请把方法和步骤解释清楚。
另外请问怎么判断一个大数是否是质数?
2004-11-30 13:56
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 evileast 发布


什么是密钥替换?不知道密钥怎么替换?
什么是暴力破解?请把方法和步骤解释清楚。
另外请问怎么判断一个大数是否是质数?

密钥替换:就是将程序内部的N给替换掉用自己生成的N来替换
简单的例子:
看雪《加密与解密(第二版)》中
有一个RSA的128 CRACKME
你打开用任意一款修改工具
搜索到他的N把它替换掉
我选择的是
N:70D946E70C791C7BA0C6A5C78DF25CE9
其他的用来计算注册码
D:15D8FAF12069122A5B55DD1606955A5
P:AA98FD8C66CBC263
Q:A9577456D7819F43
真正用得上的就是N和D
按照看雪书上的方法计算,很快你就得到
替换N后“pediy”的注册码为:22902D6F172D16AFD8F693A536061FB8
而不是以前的:404E85B5FEF4AE26FC2229D028BE01AD
密钥替换原理就是这样。

暴力破解:就是强行修改指令使程序运行到验证通过的地方~
判断一个大数是否是质数:短的就拿工具分解,长的就不搭理他~~~:D

我是菜鸟~~~~
2004-11-30 15:36
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 OllyDbg 发布

密钥替换:就是将程序内部的N给替换掉用自己生成的N来替换
简单的例子:
看雪《加密与解密(第二版)》中
有一个RSA的128 CRACKME
........


3ks!看来的确是程序的问题,而不是算法的问题了。
2004-11-30 22:01
0
雪    币: 231
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
如果存在密钥替换的问题,那再大的N也没用了。不过,这属于程序设计的缺陷。

判断一个大数是否是质数:短的就拿工具分解,长的就不搭理他~~~
其实都可以用工具来分解,如果告诉你是素数,那就是素数,如果工具开始分解了,那就不是素数,而不用管是否分解成功。
2004-12-1 08:26
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最初由 风云剑 发布
如果存在密钥替换的问题,那再大的N也没用了。不过,这属于程序设计的缺陷。

判断一个大数是否是质数:短的就拿工具分解,长的就不搭理他~~~
其实都可以用工具来分解,如果告诉你是素数,那就是素数,如果工具开始分解了,那就不是素数,而不用管是否分解成功。

1024bit你分解给我看看~~~~
rsatools算一会自己就退出了,factor根本就不认512bits的
给你个1024 的weak key你怎么办?
2004-12-1 08:50
0
雪    币: 231
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
问题是他只要判断是否是素数,而不是要分解。如果分解工具会退出的话,那就用Mathematica5的PrimeQ函数来做。
而且,我试过RSATool,如果那个1024bits的数是素数,会给出提示。如果开始分解了,那就不是素数,不用管他是否真的能分解出来。
2004-12-1 09:13
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
14
因为内存不够,所以RSA Tools一会就推出了,还是那句话,如果有足够强的硬件支持,分解512位的大素数不是不可能的
2004-12-1 15:14
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
比如我我有一个数8633,那应该怎么找密钥?
有两种方法:
1.是设置个累加器i=2,用它除8633,然后累加i++,每累加一次除一次.
2.先用2除,然后生成比2大的最小的质数3除,然后是5...

这两种方法有什么优缺点?还有没有更好的方法?
2004-12-1 17:22
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
是选择更好的算法还是更快的计算机?:)
2004-12-1 17:30
0
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
17
最初由 OllyDbg 发布

密钥替换:就是将程序内部的N给替换掉用自己生成的N来替换

........


思路不错,如何隐藏N是个问题。
用这方法做出的注册机得带一个补丁程序。:D
2004-12-2 23:31
0
雪    币: 397
活跃值: (799)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wsy
18
shoooo:你把发现的注册机调试一下,看看是不是用你的私钥生成的注册码~~

我觉得这个建议你可以考虑一下
再有:512确实太短,不过好像也不是普通计算机可以轻易解决的
2004-12-3 15:06
0
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
19
2004-12-11 18:01
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
谢谢大家的分析,我又认真考虑了一下,另外又打听了一下对方破解的办法,结论如下:

RSA 512 加密的密钥应该没有被破解出来,因为我研究了RSA 的所有漏洞,要破解除非用大型机或大量网络PC做网格计算,成本太高,对方不可能这么做。

后来发现问题不是RSA加密算法的问题,而是传输过程没有加密,用户码和512bit的签名(注册码)全部是明码传输。

我猜测是被“破解者”大量监听了网络传输的用户码和配套注册码,然后照抄现成的用户码和注册码,导致出现大量用户码和注册码泄漏。

由于我暂时无法知道哪些合法的用户码被监听,所以无法在新版软件中屏蔽掉。

大家看看有什么好办法吗?
2004-12-11 23:14
0
雪    币: 3246
活跃值: (374)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
21
居然能监听你的传输?你单位的人?还是你的激活服务器所在网段的人?即使能监听到很多,也是不至于多到可以做keygen的。你的整个保护机制是啥(不光是算法)?

最初由 zxl777 发布
后来发现问题不是RSA加密算法的问题,而是传输过程没有加密,用户码和512bit的签名(注册码)全部是明码传输。
2004-12-12 00:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ASM
22
看来问题也不是在于传输过程有没有加密,而是用户码、注册码的硬件无关性……
2004-12-12 02:11
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
23
我记得tEAR和simonzh合作的ACP keygen都是替换n吧
2004-12-12 16:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
最初由 evileast 发布
比如我我有一个数8633,那应该怎么找密钥?
有两种方法:
1.是设置个累加器i=2,用它除8633,然后累加i++,每累加一次除一次.
2.先用2除,然后生成比2大的最小的质数3除,然后是5...

........


似乎你的方法没人会用来分解大数:D
2004-12-18 06:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
最初由 zxl777 发布
谢谢大家的分析,我又认真考虑了一下,另外又打听了一下对方破解的办法,结论如下:

RSA 512 加密的密钥应该没有被破解出来,因为我研究了RSA 的所有漏洞,要破解除非用大型机或大量网络PC做网格计算,成本太高,对方不可能这么做。

后来发现问题不是RSA加密算法的问题,而是传输过程没有加密,用户码和512bit的签名(注册码)全部是明码传输。
........


你是512bit还是512位的数
2004-12-18 06:06
0
游客
登录 | 注册 方可回帖
返回
//