打印

阻止或降低分段攻击HotWC3网站注册散列数的方法

[复制链接]
1855|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2011-12-26 23:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hotpower 于 2011-12-27 01:07 编辑

菜农在《分段攻击HotWC3网站注册散列数的方法》一文中介绍和演示了分段攻击HotWC3的方法。
此攻击手段避开了网站特定码和用户名的阻击,直接用散列数攻击用户密码。

它使本来认为对攻击者设置障碍的都形同虚设,关键就是可以分段攻击。
分段攻击利用了CRC的一个特性,即:

本次的密文作为下次的初值。


在那个2次攻击的例子中,攻击者借用第1次攻击得出的散列值做为第2次的初值,
导致了避开了网站特定码和用户名的阻击,直接用散列数攻击用户密码。

如何阻止或降低分段攻击呢???
CRC由初值,出值,权值和方向组成。权值即CRC多项式可认为是算法。

假若算法公开,那么就只剩下初值或出值了。
由于出值是简单的输出异或,可以放弃此想法,那么就是初值了。

再根据CRC的一个特性:
新原文=旧原文 XOR 旧初值。
新初值=0


由于HotWC3采用的是不可逆的CRC算法,故碰撞得出的分段原文可能不是真的原文。
故无法导出本次的初值即上次的密文即上个分段的散列值,这样就阻止了分段的攻击。

故第一个分段的初值必须不公开,这样才可以阻止分段攻击。
这样使攻击将需要全部的信息才能得出正确的散列值。
即逼迫用散列值碰撞得出真正的网站注册信息。

那么如何不公开初值呢???
这个初值必须由除用户和网站外的“第三方”来提供。
如安全U盘,提款机自身的密钥等“机器方”。

HotWC3网上单向散列函数验证:http://www.hotpage.net.cn/HotPower_HotAjax.html


用户hotpower手持:
用户名:hotpower,用户密码:250

机器手持初值:FFFFFFFFFFFFFFFF

网站www.21ic.com掌握:
网站特定码:www.21ic.com
用户名:hotpower
用户密码注册长度:3
散列数:8917DEF303D5B0E3 【上图中点击运算后的“结果”】

再例:


用户hotpower手持:
用户名:hotpower,用户密码:250

机器手持初值:0250250250250250

网站www.21ic.com掌握:
网站特定码:www.21ic.com
用户名:hotpower
用户密码注册长度:3
散列数:096D10296EA76B4F【上图中点击运算后的“结果”】

此方法由于采用三方认证,散列数由三方共同提供。其中机器方认为是不公开的,即初值不公开。
而网站方不知道用户密码和机器初值,攻击者必须同时碰撞两个参数,难度成级数发展。
最重要的是攻击者必须依靠机器穷举,例如将提款机拿回家里穷举~~~
否则攻击得到的散列数是无用的,因为HotWC3是流控制即顺序运算,没有初值将无法开始。
因为散列数必须严格按顺序计算,因为分段攻击已被阻止。


也许有人认为此方法只适用于软件和硬件结合的设备,由设备即机器来提供初值。
但是让人上网携带U盘肯定是不可取的。
那我们可以将用户密码发散分组为初值和密码。
例如用菜农的三角密码来呈现平方的发散,会是一个很大的数值,剪裁后作为初值和密码一样可以降低分段攻击的可能。

这样的发散初值可以得到保护,因为你必须知道用户密码才可以得到分解的初值和分解的密码。
你不知道初值,那么就归为了准三方认证,安全要提高不少。


菜农HotPower@126.com 2011.12.26 23:08 于雁塔菜地

相关帖子

沙发
xyz549040622| | 2011-12-26 23:25 | 只看该作者
晕晕的,双手互博,哪个会胜利

使用特权

评论回复
板凳
hotpower|  楼主 | 2011-12-26 23:29 | 只看该作者
晕晕的,双手互博,哪个会胜利
xyz549040622 发表于 2011-12-26 23:25


晕,下盲棋的必须自己互博~~~

使用特权

评论回复
地板
缥缈九哥| | 2011-12-27 00:35 | 只看该作者
顶起

使用特权

评论回复
5
consif| | 2011-12-27 00:42 | 只看该作者
看不懂,也要顶起:lol

使用特权

评论回复
6
cecwxf| | 2011-12-27 08:36 | 只看该作者
顶顶 mark

使用特权

评论回复
7
plc_avr| | 2011-12-27 08:38 | 只看该作者
顶!

使用特权

评论回复
8
Swallow_0322| | 2011-12-27 08:52 | 只看该作者
顶!

使用特权

评论回复
9
hotpower|  楼主 | 2011-12-27 12:42 | 只看该作者
本帖最后由 hotpower 于 2011-12-27 15:46 编辑

阻止分段攻击的依据是:
在两段之间,前段的散列数就是后段的初值很难做到。
CRC是流运算,开始有初值的条件,结束有散列的约束。
可以任意攻击一段,成功地得到初值和散列数。
但是本段的初值很难吻合上段的散列数。
可以利用CRC性质强行吻合,即改变本段的原文。
但是我们不知道上段的散列数。
故必须先计算最早的段,即必须知道首段的初值才能得到首段的散列数,才能将其作为下段的初值。

故可以论证,保护初值就可以阻止分段的攻击。
所以像网站登录可以用用户密码来作为初值。
最简单的可以将用户密码先计算散列出初值。
这样就逼迫碰撞要知道密码(才能知道初值)才可以。

由于HotWC3采用的是真正的CRC单向散列,故分段攻击无实际意义,因为只有穷举一条路。

而且查表也几乎不可能,因为碰撞过多,一个散列数对应多值。

使用特权

评论回复
10
乡村男孩| | 2011-12-27 13:48 | 只看该作者
顶楼
然后继续听大叔讲课

使用特权

评论回复
11
hotpower|  楼主 | 2011-12-27 16:14 | 只看该作者
顶楼
然后继续听大叔讲课
乡村男孩 发表于 2011-12-27 13:48


先预习这2个链接:

http://zh.wikipedia.org/zh-cn/%E5%BE%AA%E7%8E%AF%E5%86%97%E4%BD%99%E6%A0%A1%E9%AA%8C

http://zh.wikipedia.org/wiki/MD5

使用特权

评论回复
12
sioca| | 2011-12-27 21:50 | 只看该作者
大叔能给推荐个CRC入门文档么,网上看了很多,都是一个论文引用一个论文。转了好几个**也没看明白

使用特权

评论回复
13
highgear| | 2011-12-28 00:00 | 只看该作者
顶!
不过,网站可以使用简单的方法,比如多次错误则拒绝访问来防范爆破(暴力**),仅加大爆破难度而任由碰撞不可取。hot大叔的方法似乎应换个方向。

使用特权

评论回复
14
hotpower|  楼主 | 2012-10-23 19:18 | 只看该作者
挖墓为2012.10.25菜农个人版《HotWC3密码体系》开版搜索

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1538

主题

21697

帖子

505

粉丝