首页
社区
课程
招聘
看[divinger充值卡攻击前奏]一文有感
发表于: 2010-5-29 17:22 15847

看[divinger充值卡攻击前奏]一文有感

2010-5-29 17:22
15847
【废话】
首先声明,我在密码学方面并无任何造诣,对各种理论知之甚少。如果贴中出现错误之处,还请各位高手热心指正。

divinger的帖子:http://bbs.pediy.com/showthread.php?t=113782

我是今天才看到此贴的。

我的确没想到divinger竟然成功的攻击了此类充值系统。 我查阅了部分互联网资料加上自己的理解便有了下文。

【充值系统猜想】
这里我就以一般的手机充值卡作为例子。比如中国移动的充值卡,它有一一个序列号。这个是可见的。然后还有一个密码,这个是被涂层所覆盖的。序列号就相当于卡的ID了,对我们来说没什么用。我们充值时,只需刮开涂层,然后拨打一个充值电话13800138000,按提示输入密码即可充值成功。

上面介绍的是充值方法。现在假如我是中国移动,我该怎么保证这种机制的安全性了?
(保证安全性说白了就是防止他人在无卡的情况下通过多次尝试而成功充值)

1。充值的手机号码必须是已经开通的中国移动号码。
   拨打充值电话时,语音提示最后会询问并确认你要充值的手机号码。
   服务中心会从数据库中查询此号码是否合法。不合法直接return false。

2。密码序列的有效性。
   (从效率方面来看,本来应该是先检验有效性,然后在数据中查询号码是否合法的,但服务中心的机器肯定不是一般的机器,我想应该会是大机之类的重量级东西,所以这点效率它可以忽略)
   
   密码序列怎样才算有效?
   和网络数据包的包尾CRC校验类似,密码序列中肯定包括数据校验位,说白了,就是密码序列的各部分必须满足一个算法。然后这里的算法会尽可能让你猜测不出来,比如是否是通过设置校验位来检验数据有效性,校验位数据处于密码序列的哪一部分,长度几何等。

3。密码序列产生的随机性!
   这一点是最关键的地方。
   大家想,中国移动要卖充值卡,它首先要制作一批充值卡,大家再想全国该有多少个充值卡销售点,所以这批充值卡的数量是十分巨大的。
   因为在制作每张充值卡的时候,密码是需要印刷上去的。所以,无时无刻,中心服务器中可用的有效密码的数量也是十分巨大的!
   虽然数量巨大,但如果你把它当成一个数字,它还是很小的。比如拿它和40亿比,还是显得很小。

   不管怎样,移动公司为了防止有人从已有的数据中找出规律,最大可能地预测出它服务器中保存的有效密码,它必须选择一个好的密码生成算法。

【关于随机性】
0。计算机产生的随机都是伪随机,因为计算机本身就是一个确定性的系统。随机序列取决于种子和随机算法。比如我们常用的srand和rand。  

srand的种子在32位机器上有4G的范围。crt库的rand算法固定。所以也就40多亿个序列。超过这个周期就必然会有重复。
1。序列元素的随机性。
   比如最常用的,我要生成一个随机字符串。我一般会这么做:
   a。设置一个种子。
   b。使用线性同余的方法,得到一个序列。
   srand(time)
   for i = 0 至 len
   	rand() % 26

2。序列的随机性
   还是比如要生成一个随机字符串,如果使用下面的代码:
   for i = 0 至 len
	srand(time)
   	rand() % 26

   那么得到的很可能是一个类似“xxxxxx”的字符串。

说到这里,我想明白的早都明白了,不明白的可以自己思考。 我要说的也即:在使用随机的时候,一定要明确你需要的是元素的随机还是序列的随机,其实序列的随机也就是种子的随机。 因为一个种子对应一个序列。

【充值卡的随机选择】(猜想)
*纯属猜想*
返回到充值卡这里,充值卡的密码我猜是分批次生成的,比如这一批要生成N张,那么设置一个种子,然后之后生成的每个密码都是该种子所对

应序列的一个元素。我为什么会这样猜想了,因为如果对每一个密码的生成都设置一个种子。那么你还得考虑种子的随机性。而且有一点需要

注意,如果在生成每个密码的过程中,没有人为的干预控制的话,计算机硬件环境的变化会很小(如果生成时间不长的话)或者变化是有一定规律的。

对于一批密码的生成,每个密码的生成是否是公用一个种子,我70%倾向于是。
对于一个密码的生成,每个字符的生成是否是公用一个种子,我95%倾向于是。

【充值卡随机性攻击猜想】(纯属猜想)

1。统计数据源获取。
   获得大量的密码数据, 突然隐约记起来以前有人低价收购过废弃充值卡的。根据大量数据运用统计学方法分析。

2。关键点数据的取得。
   这里就转到divinger所说的日本的WebMoney公司。假如我想知道连续几个密码是多少。我该怎么办了?
   我可能会选择在夜深人静的时候,日本网民都睡觉了的时候,去他们网站连续购买几张充值卡以确保连续性。但同时我还得祈祷,服务器在

  售卡的时候的确是顺序的从数据库取数据,且该批次生成的密码是按顺序放到数据库中的。(这个概念就很低了)

3。保证攻击密码的校验性。

4。无线电发射电磁波--根据服务中心应答情况(速度,时间等等症状)优化攻击密码生成策略--大功率发射,直到碰撞成功。
   (这个就纯属YY了,呵呵~ 大家一笑而过吧~~)

【关于divinger所提到的哲学】
攻击者需要具备的基本哲学素养:

第一 这个世界上本没有路,只是走的人多了也便有了路
第二 科学没有国界,但是科学家有自己的祖国
第三 世界上没有完全相同的两片叶子

对应以上基本哲学常识,攻击者需要的哲学思考是:

第一 没有人走过并不表示那不是路
第二 任何学科都是人为划分的,现代人的创新能力低下,大多源于此
第三 世界上肯定有完全相同的两个序列号类似于 1=1 这个简单的等式两边的1是完全相同的一样

我妄加猜测了一下, 若有不对之处,还请divinger指出:
1,2两点无外乎是强调创新能力和思维的大胆性。 第3点可能说的是计算机不可能制造出真正的随机,伪随机始终会有一个重复周期。

其实我也认为哲学很重要,去年9月份还请教过伊万前辈,请求推荐几本书籍。不过我当时的目的并不是为了去升华自己的计算机知识,因为我

还没达到那个境界,我只是觉得生活的方向思维的习惯需要哲学去指引。只是感觉是这样,也不知道对错。

【关于divinger的声波逆向理论】
R大去搜索这个理论,肯定是搜索不到的。这只是divinger为他的算法随便起的一个名字。
自从技术与利益挂钩了,很多东西自然是不会被共享出来的,真正的技术始终都是不公开的。这个我深有体会。当来到一个新环境,可能你之

前半年都没解决的问题,别人无私的指点你几句,你就明白了,同时你会发现,怎么互联网上讨论这个问题这么多就是没看到个像样的答案或者解决方案了, 因为--不公开的技术才是真正厉害的技术。

【后记】
写了这么多, 其实也没什么东西。。。 关键的随机性攻击这里,也没讲多少。。 因为本人水平有限。

至于divinger的非线性碰撞和声波逆向理论, 我也不大明白。 期待他的文章。

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

收藏
免费 1
支持
分享
最新回复 (24)
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
真不好意思,您的猜测都与本意相去甚远,这三个思考问题都跟我成功猜中序列号有至关重要的理论指导作用,虽然你的水平不高,但精神可嘉,小弟不才,只针对第一点稍作提示:
第一个思考问题针对的是以下两个方面:

第一 否定路——>否定现今广泛研究的各种逼近方法论——>突破惯性思维——>将密码学未曾涉猎的声音理论引入实践
第二 肯定无路——>肯定新的研究方向——〉用真随机数理论与方法研究正在应用中的伪随机数理论与方法——>这里会是什么方法论呢?

既然是哲学思考,就必然是世界观与方法论的统一,也是理论与实践的结合。

在你成功突破第二个问题前,恕小弟不再回此贴,见谅!
2010-5-30 12:17
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
3
额。。 果然比我所想的要高一个层次。 看来是新理论了。。
2010-5-30 17:33
0
雪    币: 132
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
值得关注!!
2010-6-1 14:49
0
雪    币: 67
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
记得书上说过,计算机是不可能产生真随机数的。
2010-6-2 01:52
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
6
非也,端看隨機函數的產生過程,及如何設計。
2010-6-2 10:16
0
雪    币: 119
活跃值: (10)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
7
密码学正在火起来嘛!

divinger的理论太深奥了,看不大明白!jackozoo版主写的还可以明白些!
按照divinger的表现出来的思想,其实哲学这个东西也是可以用通俗的大家都可以明白的语言表现出来的,为什么要写的那么含蓄呢?本来和大家的知识背景就不一样,还让大家猜哑谜!有点像收徒弟的考试。

从divinger对第一个问题的解释,感觉,
“科学没有国界,但是科学家有自己的祖国”要表达的也不外乎要打破原来方法的局限,将声音理论引入随机理论嘛。然后再演化成一个新的学科?
这是不是和中国的易学思想很相似呢?将两种完全不同的东西,根据共性联系起来。找到其中的规律,期待得到什么东西。世间万物也不过金木水火土!!!
2010-6-3 12:11
0
雪    币: 993
活跃值: (442)
能力值: ( LV12,RANK:403 )
在线值:
发帖
回帖
粉丝
8
VC里是这样实现sand和rand的:
void __cdecl srand (unsigned int seed)
{
        _getptd()->_holdrand = (unsigned long)seed;
}
int __cdecl rand (void)
{
        _ptiddata ptd = _getptd();
        return( ((ptd->_holdrand = ptd->_holdrand * 214013L + 2531011L) >> 16) & 0x7fff );
}
就是一个简单的算式,受&0x7fff的影响,达不到4G的范围大小。
2010-6-3 15:18
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
阁下能够用通俗的或者不通俗的语言表现出:何为“道”吗?
2010-6-3 17:17
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
10
To Loka:
注意, 我说的4G指的是种子的取值范围是4G。这个并没有错。
rand函数中的0x7fff主要是为了增加种子所对应序列的元素的非线性规律,所以单一序列之元素的范围为0~0x7ffe。

种子的取值范围和随机元素的取值范围没有任何关系。srand到rand是32位到16位的映射,我们也可以写个myrand,完成32位到任意位的映射。
2010-6-3 17:24
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
11
請另闢 randomly number generator 討論帖。
謝謝。
2010-6-3 22:04
0
雪    币: 993
活跃值: (442)
能力值: ( LV12,RANK:403 )
在线值:
发帖
回帖
粉丝
12
是我理解上的问题。我指的是种子的有效取值范围达不到4G的大小,因为有些种子是等效的。
2010-6-4 08:52
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
13
Loka, 你太谦虚了...
其实是我误解了你的意思. 我以为你指的是随机数取值范围不到4G
2010-6-4 10:07
0
雪    币: 119
活跃值: (10)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
14
我不懂道,但百度百科一下:
  “道”是中国古代哲学的重要范畴。用以说明世界的本原、本体、规律或原理。在不同的哲学体系中,其涵义有所不同。
  老子所说的“道 ”,是宇宙的本原和普遍规律;(老子所写的《道德经》是关于“道”的经典著作。)
  孔子所说的“道 ”,是“中庸之道”,是一种方法;
  佛家所说的“道 ”,是“中道”,佛家的最高真理。所述道理,不堕极端,脱离二边,即为中道。佛家的道是中观的思想,中观思想涉及“中道”和“空”。“空”的思想似空非空,不能著空相求空。

老子曰:“有物混成,先天地生,寂兮寥兮,独立而不改,周行而不殆,可以为天下母,吾不知其名,字之曰道,强为之名曰大,大曰逝,逝曰远,远曰反”(《老子》二十五章)。

老子在给道这个名字的时候,也尽力给出了通俗的解释。

而兄台不知是处于何种心情,要这么说呢?
“小弟不才,只针对第一点稍作提示:”

也就是说,你可以做更深入的解释,只是不想说。

新的理论,想和大家沟通,把能说的说出来,不要卖关子

(反正我是看不懂的,只是认为说得尽量清楚可以更好的沟通。即便是找高手,也得要高手对你的理论产生兴趣哦)
2010-6-4 10:21
0
雪    币: 213
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这个我很赞同
2010-6-4 14:24
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
形而上为道,形而下为实
2010-6-4 15:23
0
雪    币: 302
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
对于“道”还是我来说吧
其实很简单,万物皆为道。
道化万物,万物为道。
2010-6-4 20:24
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
道可道,非常道;名可名,非常名。

道-〉方法-〉皆可道
道-〉理论-〉皆不可道

综上 小道都可以具体化,大道都可以理论化;小道都可以说出来,大道都无可名状,何故?
文字本身不存在,用一个不存在的文字来描述一个实际存在的描述客观本质的实际存在,这种方法本身就是个无法修正的错误。
好似当今并驾齐驱的两种医学:中医学与西医学

中医学  是自上而下,看似是凭借经验来判断[就像自然哲学],在诊断很多无法具体化的大病面前具有很好的应用前景
西医学  是自下而上,看似是客观事实来诊断[就像自然科学],在实际中虽然可以应对病因简单的疾病及在外科手术等操作性强的领域有很好的应用效果,在病因复杂的情况下,基本束手无策。

小弟多年来,一直研读希氏内科学系列书籍,对于我的阐述有不明白的兄弟,请先拜读一下此书再跟我论医学小道:

Cecil Medicine: Expert Consult
Hardcover: 3120 pages
Publisher: Saunders; 23 edition (August 29, 2007)
Language: English
ISBN-10: 1416028056
ISBN-13: 978-1416028055
http://www.amazon.com/Cecil-Medicine-Expert-Consult-Textbook/dp/1416028056/ref=sr_1_1?ie=UTF8&s=books&qid=1275680555&sr=1-1
http://www.elsevier.com/wps/find/bookdescription.cws_home/712071/description#description

我只读原著,中文译著错误太多,建议各位读原著!
2010-6-5 03:46
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
我们的口水之争到此结束吧,谢谢各位网友的鼓励与支持,如有兴趣讨论“真技术”或者继续讨论“道”,请到我的新贴:

http://bbs.pediy.com/showthread.php?t=114578
2010-6-5 08:56
0
雪    币: 188
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
即使是攻击一个使用成熟密码学算法的系统,也完全可以因为它的协议和实现上的问题来攻击,何况上述那些系统,很可能就是些不懂密码学的人去搞的

真正的密码学攻击是要对系统的数学模型进行攻击,从理论上去证明它有什么问题的

就算是hash,在一大堆可能是普通用户随手输入的“123456”这样的密码里面找找碰撞什么的,还不如跑跑字典去爆破

2010-6-5 15:40
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
您用字典生成与使用过 101[enter]1201 这样的密码吗?
2010-6-6 00:32
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
如何密码学能真正“火”起来,那么就会出现“天下无密”的现象吗??
2010-6-6 01:57
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
密码学会随着社会的进步不断更新发展下去,TPM及声音认证系统都是密码学的一种应用,当然我这么说,很多大牛会认为我是门外汉,毕竟不知道门在哪里的人还是很多的。
2010-6-6 09:59
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
很少回帖,密码学我是门外汉
但看的出楼主对中国古典哲学和中医学有所研究,小弟平时也好这块,对楼主关于这方面的论述很是赞同
我想中国的古典哲学思想将会对人类解释自然和社会,解决自然和社会问题提供广阔的思路和积极有益的方法
我想在这一点上国人如果可以放胆利用先祖的宝贵知识,独辟蹊径,脱离出西方哲学思想和方法的桎梏,一定会有所成就

不好意思水了此帖
2010-6-6 15:39
0
雪    币: 69
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Esc
25
标题很彪悍。
2010-6-6 16:34
0
游客
登录 | 注册 方可回帖
返回
//