首页
社区
课程
招聘
[讨论]一种我现在能想到的比较安全的加密方案,请大家指正:)
发表于: 2004-7-3 12:23 7460

[讨论]一种我现在能想到的比较安全的加密方案,请大家指正:)

2004-7-3 12:23
7460
算法使用了hash函数和公钥加密算法。首先选择程序的关键代码部分用1024bit的RSA算法进行加密,然后对去除关键代码的程序用MD5进行摘要,然后对摘要用刚才的RSA私钥进行加密。把得到的数据放到程序外部在需要时调用。程序运行时首先解密事先加密好的数据然后检验两个MD5数据是否一致,如果一致然后继续解密关键代码。注册算法也采用RSA,对用户提供的序列号用公钥进行解密然后和用户名或者由用户名产生的数据进行核对。算法的安全性建立在1024bit的RSA算法基础上。攻击者不能修改程序,否则就会通不过MD5检验,若想自己对修改后的程序生成MD5数据,但是攻击者没有私钥,就不能生成需要的数据。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 3
支持
分享
最新回复 (19)
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
其实根本没这个必要,我只需要MD5一个就能做到无法破解,但事实上我以前说过乐,CRACK手段做不到的事,不代表HACK手段做不倒,自己多学习学习吧,你这个思路并不是很新颖,否则老外普遍早用上乐。
2004-7-3 12:57
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
"程序运行时首先解密事先加密好的数据然后检验两个MD5数据是否一致" 我想这里存在漏洞.
2004-7-3 13:14
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 鸡蛋壳 发布
其实根本没这个必要,我只需要MD5一个就能做到无法破解,但事实上我以前说过乐,CRACK手段做不到的事,不代表HACK手段做不倒,自己多学习学习吧,你这个思路并不是很新颖,否则老外普遍早用上乐。

光一个MD5要伪造签名还是可行的,因为我可以同时替换消息和签名。那样的话就不能防止暴力破解了 :(
2004-7-3 14:55
0
雪    币: 231
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这要程序能在你的PC上运行

就能破解
2004-7-3 16:10
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 cobra1111 发布
这要程序能在你的PC上运行

就能破解

某种程度上可以这么说,但是取决于你的破解的定义 。如果你做不出注册机和补丁,是否算破解呢?如果我对整个程序先用AES加密,然后再一开始就要你提供解密密钥,否则就得不到正确的程序,那样的话,你又如何破解呢?因为你只能得到正确的密钥后才能谈破解。但是我们无法防止正确密钥的非法传播。这也某种程度上印证了你的说法,技术上可行和操作上可行还是有很大的距离。世上没有100%安全的软件,除非你采用一次一密。:)
2004-7-3 18:48
0
雪    币: 109
活跃值: (36)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 AWildChild 发布

某种程度上可以这么说,但是取决于你的破解的定义 。如果你做不出注册机和补丁,是否算破解呢?如果我对整个程序先用AES加密,然后再一开始就要你提供解密密钥,否则就得不到正确的程序,那样的话,你又如何破解呢?因为你只能得到正确的密钥后才能谈破解。但是我们无法防止正确密钥的非法传播。这也某种程度上印证了你的说法,技术上可行和操作上可行还是有很大的距离。世上没有100%安全的软件,除非你采用一次一密。:)


你是鸡蛋壳派来的?
2004-7-3 19:26
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
继续!
2004-7-3 21:33
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 pll823 发布


你是鸡蛋壳派来的?

我是论坛的新人啊 ,刚出道就急急忙忙抛出自己的不怎么成熟的想法想和大家讨论讨论,希望大家提出自己的见地啊
2004-7-3 22:25
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 comelysouthchin 发布
"程序运行时首先解密事先加密好的数据然后检验两个MD5数据是否一致" 我想这里存在漏洞.

对这一点我想说:由于MD5算法的单向性,我可以让攻击者知道摘要是什么,而且也无法不让他知道。我用私钥进行了加密是为了防止用户同时修改程序和摘要。攻击者可以暴力修改程序,也可以知道暴力修改程序后的摘要,但是他无法知道这个摘要用私钥加密后的结果,因为他不知道私钥。当然这样做还是不能防止内存动态修改:等你摘要解密完了,再来修改最重要的跳转语句。但如果改为对内存中的数据进行MD5摘要,然后比较分为多次进行分段比较,比较完一段后然后对内存中数据再进行一次摘要,然后继续用公钥解密剩下来的部分再比较,这样重复多次呢?这样可以可以大大加强分析的难度,不过如果他读懂了你的思路,还是能绕过去:(不管怎么说我觉得这样的加密可以保证写不出注册机和补丁来了,只能提取内存代码然后重新组合成一个新的exe文件,大家觉得我说得对吗?:)
2004-7-3 22:43
0
雪    币: 203
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最初由 AWildChild 发布
注册算法也采用RSA

既然算法是公开的,为什么还要去CRACK这个软件呢?只需要跟踪出私钥(也许是公钥),然后用RSA算法直接算出正确的注册码不行吗?
2004-7-3 22:59
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最初由 yushiro 发布

既然算法是公开的,为什么还要去CRACK这个软件呢?只需要跟踪出私钥(也许是公钥),然后用RSA算法直接算出正确的注册码不行吗?

因为RSA算法是单向陷门函数,建立大数分解的计算不可行上面,如果要分解1024bit的大数,耗费的人力物力大于你破解软件的所得利益 所以你不会这么做 呵呵
2004-7-3 23:04
0
雪    币: 203
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最初由 AWildChild 发布

因为RSA算法是单向陷门函数,建立大数分解的计算不可行上面,如果要分解1024bit的大数,耗费的人力物力大于你破解软件的所得利益 所以你不会这么做 呵呵

呵呵,是这样。不过,刚才仔细想了一下你前面的回复,觉得楼主是单纯从CRACK或者技术角度考虑这个问题了。之前,你也说了,可以跟踪内容,然后合并出一个新的EXE,如果作为普通使用者,我根本不关系这个软件是怎么出来的,只要完成我需要的功能就可以了,也就是说,这个新的EXE发布出去的话,就会有人用,因为与你加密的软件功能一样,而且又没有限制,你说是不是?
2004-7-3 23:18
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 yushiro 发布

呵呵,是这样。不过,刚才仔细想了一下你前面的回复,觉得楼主是单纯从CRACK或者技术角度考虑这个问题了。之前,你也说了,可以跟踪内容,然后合并出一个新的EXE,如果作为普通使用者,我根本不关系这个软件是怎么出来的,只要完成我需要的功能就可以了,也就是说,这个新的EXE发布出去的话,就会有人用,因为与你加密的软件功能一样,而且又没有限制,你说是不是?

其实我觉得问题最大的地方在注册码的不法流通,如果我对程序的关键代码部分只有用户提供密钥解密后才能用的话,就可以防止攻击者脱壳了。
2004-7-3 23:36
0
雪    币: 203
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
程序必须要解密以后才能运行的,对吧?只要有人公开其通过正当途径获得的注册码,完全可以把加密代码解密DUMP出来阿。
2004-7-3 23:40
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
最初由 yushiro 发布
程序必须要解密以后才能运行的,对吧?只要有人公开其通过正当途径获得的注册码,完全可以把加密代码解密DUMP出来阿。

对啊,我就是这个意思啊,我觉得这就是接近极限了,如果再升级就是硬件相关,只能在那台拥有合法注册码的用户的机器上运行。共享的安全性的极限是否就是这样呢?这样的话只有有一个cracker花钱买软件再dump再发布,那样的话非法软件的流通是不是限制到了最低点呢?
至少我能保证卖出一份了,如果市场上想要出现破解版本的话,哈哈!
2004-7-3 23:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
最初由 AWildChild 发布

对这一点我想说:由于MD5算法的单向性,我可以让攻击者知道摘要是什么,而且也无法不让他知道。我用私钥进行了加密是为了防止用户同时修改程序和摘要。攻击者可以暴力修改程序,也可以知道暴力修改程序后的摘要,但是他无法知道这个摘要用私钥加密后的结果,因为他不知道私钥。当然这样做还是不能防止内存动态修改:等你摘要解密完了,再来修改最重要的跳转语句。但如果改为对内存中的数据进行MD5摘要,然后比较分为多次进行分段比较,比较完一段后然后对内存中数据再进行一次摘要,然后继续用公钥解密剩下来的部分再比较,这样重复多次呢?这样可以可以大大加强分析的难度,不过如果他读懂了你的思路,还是能绕过去:(不管怎么说我觉得这样的加密可以保证写不出注册机和补丁来了,只能提取内存代码然后重新组合成一个新的exe文件,大家觉得我说得对吗?:)


你最后一句话就能证明你这些花招一点用都没有....
还不如直接用rar压缩一下加密码保险哪
2004-7-4 08:11
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
最初由 DamnYa 发布


你最后一句话就能证明你这些花招一点用都没有....
还不如直接用rar压缩一下加密码保险哪

比这样还是要安全的多吧,那样加密的情况下只有一个cracker花钱买软件再dump再发布,而且这个craker得有相当的经验,一般的菜鸟是难以搞定的。
rar的话,有个人发布一下解密密码不就可以了吗?
2004-7-4 10:13
0
雪    币: 203
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
讨论到这个份上,我觉得已经没有继续下去的意义了,原因很简单,到现在位置,还没有一个软件能让每个用户掏钱去买正版的,最多我不用,肯定还有功能相同的同类产品(软件)。记得曾经看过一篇将加密的文章,最后一句就是“记住,不要认为没有你的软件,地球就不转了,把心思花在加密上,还不如放在软件功能的提高或者改进上”:D楼主说对不对阿?
2004-7-4 22:36
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
最初由 yushiro 发布
讨论到这个份上,我觉得已经没有继续下去的意义了,原因很简单,到现在位置,还没有一个软件能让每个用户掏钱去买正版的,最多我不用,肯定还有功能相同的同类产品(软件)。记得曾经看过一篇将加密的文章,最后一句就是“记住,不要认为没有你的软件,地球就不转了,把心思花在加密上,还不如放在软件功能的提高或者改进上”:D楼主说对不对阿?

呵呵,软件的功能和效率当然还是一个软件能否成功的关键,保护只是辅助手段。密码学中一些经典的理论在共享软件上就会失效,可惜!因为我们无法区分可信任用户和不可信任用户:(
2004-7-4 23:18
0
游客
登录 | 注册 方可回帖
返回
//