首页
社区
课程
招聘
[推荐]HotWC3网上运算器CRC碰撞操作方法
2009-11-3 21:05 6554

[推荐]HotWC3网上运算器CRC碰撞操作方法

2009-11-3 21:05
6554
最新版的HotWC3网上在线CRC运算器V4.11开始全部兼容优秀的CRC计算器fsum frontend-1.5.5.1软件
并全部演算正确。

由于IE版面的问题,将所有功能集成到一个功能下拉选择框内,它内嵌许多有用的功能。类似一个带有
CRC运算的计算器。

本CRC运算器支持hex半字节和ascii单字节输入,在"CRC运算"功能下点击运算即可对输入进行CRC正运算,
运算过程即密文在输出框内,校验和在结果框内。
半字节的个数或ascii字符的双个数在“碰撞”钮的右侧,表示输入的半字节位数。
其“0”为与输出等长的位数,主要用于CRC碰撞。

点击“还原”即可得到输出框对应的输入,注意结果将替代最后一组密文(CRCN的位数)

CRC碰撞操作方法:
例如CRC32 多项式=右移CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1
权值=0xEDB88320 初值=0xFFFFFFFF 出值=0xFFFFFFFF

输入:123456 输出:263E56C5 结果:D9C1A93A 碰撞位数(输入的位数):6

即:在CRC32下123456(小端)下得到校验和0x263E56C5
点击“还原”,输入不变,因为碰撞位数=6,即就是操作本身。

点击“碰撞”,得到碰撞位数=0即要求碰撞的全部长度(输出的总长,权值的整数倍)
点击“还原”,输入得到:26625E59,即:
在CRC32下26625E59(小端)下也得到相同的校验和0x263E56C5

故:当输入不为权值的整数倍(CRC32为32位即4个字节)时,本身就会发生1次CRC碰撞。

由于 输入字节 mod CRC32字节数 = 3 mod 4 = 1 即1个字节至少发生2^8=256次碰撞

由于输入字节小于CRC32字节数,故只能有1次碰撞。

若输入为:12345678AB 则会发生至少256次CRC碰撞,改写碰撞位置的数据点击“还原”:

输入12345678AB 输出B5F6F1679267786A 结果6D988795
它实际为:
输入1234567869C6CAC0 输出B5F6F1679267786A 结果6D988795

碰撞位置 B5F6F1XX9267786A XX=00~FF
例如:
输入89F81CA50EC6CAC0 输出B5F6F1009267786A 结果6D988795
输入C8FE6D7E0FC6CAC0 输出B5F6F1019267786A 结果6D988795
输入4AF28FC80CC6CAC0 输出B5F6F1029267786A 结果6D988795
。。。。。。。。。。。。。。。。。
输入508876AAF1C6CAC0 输出B5F6F1FF9267786A 结果6D988795

任意碰撞(清除“碰撞位数”并且输出是权值的倍数以上):
由于输出字节大于权值字节,故可以任意碰撞,碰撞次数=2^(输出字节数-CRCN)

输入1234567869C6CAC0 输出B5F6F1679267786A 结果6D988795
碰撞位置                 XXF6F1679267786A XX=00~FF
输入ED10102B69C6CA75 输出00F6F1679267786A 结果6D988795
。。。。。。。。。。。。。。。。
输入0EC318E569C6CA8A 输出FFF6F1679267786A 结果6D988795

输入1234567869C6CAC0 输出B5F6F1679267786A 结果6D988795
碰撞位置                 B5XXF1679267786A XX=00~FF
输入F824812869C63CC0 输出B500F1679267786A 结果6D988795
。。。。。。。。。。。。。。。。
输入E99F4C1169C6C3C0 输出B5FFF1679267786A 结果6D988795

输入1234567869C6CAC0 输出B5F6F1679267786A 结果6D988795
碰撞位置                 B5F6XX679267786A XX=00~FF
输入710724216937CAC0 输出B5F600679267786A 结果6D988795
。。。。。。。。。。。。。。。。
输入38EAAD4B69C8CAC0 输出B5F6FF679267786A 结果6D988795


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

收藏
点赞7
打赏
分享
最新回复 (5)
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
schlieffen 1 2009-11-3 23:00
2
0
菜农应该让自己的作品放到更大的环境中去检验检验,看雪的密码学板块刚起步,只有少数大牛和版主能和你讨论。记得看你的某帖子中说:王育明教授邀请你去某某论坛的,你完全应该去。
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
HotPower 2009-11-3 23:23
3
0
不是到什么论坛~~~

他曾说过他年轻在位一定把我调到他们学校,俺说还是“农村”好~~~
那时候,“农村是个广阔的天地”,俺真没想过去学校。

我对他说:现在有房子,有“地”,俺不图什么,只要开心就好~~~

每次升级我都先发给王教授先用~~~

谢谢2楼的先生~~~

菜农自言自语惯了~~~俺涉及的领域还少有人和菜农谈的来的,可能是俺的思维和表达能力有限。
所以俺孤独惯了~~~

→欢迎访问“电子工程师的收藏夹”!!!
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
HotPower 2009-11-4 00:46
4
0
http://bbs.pediy.com/showthread.php?t=99977


像 '1234' 的 CRC32 为 9BE3E0A3
我试过 长度=4 的明文 只有 '1234'

菜农回答:此话是对的,它即为"CRC签名"

但长度=5的明文有256个, 例如下列几个明文 (十六进制), 其CRC32都是 9BE3E0A3:
20 74 FD 5F DD
21 E2 CD 58 AA
22 58 9C 51 33
23 CE AC 56 44
24 6D 39 32 DA
25 FB 09 35 AD
26 41 58 3C 34
27 D7 68 3B 43
28 46 75 84 D3
29 D0 45 83 A4
2A 6A 14 8A 3D
2B FC 24 8D 4A

长度=16 的明文只有下列一组附合 CRC32=9BE3E0A3
00 00 00 00 00 00 00 01 CE DD 16 26

菜农注解:此话天大的错误!!!
00 00 00 00 00 00 00 01 CE DD 16 26实际长度为12,因为它大于4个字节,故有2^(12-4)次碰撞!!!

输入:0000000000000001CEDD1626
输出:DEBB20E3EDDA1000641C1F5C 结果:9BE3E0A3
攻击位XXXXXXXXXXXXXXXX641C1F5C
菜农开始攻击!

输入:FFFFFFFF00000000CECDCCCB
输出:0000000000000000641C1F5C 结果:9BE3E0A3

输入:E075C51A0E9B2BF4DFDCDDDA
输出:1111111111111111641C1F5C 结果:9BE3E0A3

输入:9D0AD96D9D0AD96D31323334
输出:FFFFFFFFFFFFFFFF641C1F5C 结果:9BE3E0A3

现在再选择16位攻击(2^(16-4)次碰撞):
输入:FFFFFFFF0000000000000000CECDCCCB
输出:000000000000000000000000641C1F5C 结果:9BE3E0A3

输入:9D0AD96D9D0AD96D9D0AD96D31323334
输出:FFFFFFFFFFFFFFFFFFFFFFFF641C1F5C 结果:9BE3E0A3

哈哈~~~现在看出来了吧,碰撞次数一定是个“天文数字”~~~

所以,菜农搞得“CRC任意碰撞”是“可以预测的”

当CRC输入位数=CRC权值即多项式时,此CRC将无任何碰撞发生,此时的CRC可用于数字签名。

这样的无碰撞机制的CRC与MD5等号称无碰撞的散列函数最大的不同:

线性,绝对无碰撞而非号称,因为此时全部的数据都在一个CRC编码矩阵中。
可逆,但必须知道权值和初值及出值和方向。

而MD5是由4个特定数据和4种非线性函数组成的,但它已被发现有MD5碰撞,所以签名是不可靠的,
虽然MD5的碰撞概率很小。

而CRC的碰撞概率是已知的,即2^(输入字节数-CRCN字节).

当输入字节数==CRCN字节时,无CRC碰撞,
当输入字节数<CRCN字节时,有1次CRC碰撞(和CRCN等长的必有一个)

故CRC要用于数字签名,只要满足输入字节数==CRCN字节即可,但它的缺点是有CRC密钥(权、方向、出入值)
此种情况下,出值可以恒为0,只要知道权值和初值即可简化CRC密钥。故有“CRC密钥碰撞”。

菜农虽然不知什么原因CRC128被MD5等散列函数所替代,但菜农坚信CRC256,CRC512,CRC1024一定不会比MD5弱~~~
只是计算机位数的限制,实际CRCN可逆算法可以让N为无穷大。

菜农的HotWC3已满足内核任意CRCN变化,因为CRC位域N可以随意调整。

从HotWC3运算器支持位域4即可输入半字节可以看出菜农说的绝非梦话~~~只是俺的知音太少~~~

或用菜农的三点攻击法则,但必须知道特定三组的明文与密文对,或更多的明文与密文对来攻击CRC权值。
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-11-4 20:58
5
0
术语太多,外行不懂。
crc32不是可逆吗?为什么还要碰撞。
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
HotPower 2009-11-4 22:44
6
0
CRC可逆和CRC碰撞实际是两回事,CRC可逆是有条件的,CRC碰撞是无条件的。
可逆是一对明文和密文可逆,而碰撞是指相同的明文流可能得到1个相同的校验和即最后1个密文。
前者是1对1的关系,后者是多对一的关系。

并非所有的CRC32都是可逆的,它的可逆条件是:
左移CRC32权值最低位必须为1,右移CRC32权值最高位必须为1,否则CRC32不可逆。
当CRC32的输入位数不等于32位即4个字节时,将会发生碰撞。

若不说“术语”,可用“狼多肉少”来比喻。
最简单的就是“星期碰撞”,因为没7天将会发生一次,因为一年的天数太多。

在散列函数中,任意长度的信息都会散列为一组固定长度的散列值,那么根据“狼多肉少”的原理,
即会发生碰撞,只是散列函数得到的散列值碰撞的概率极小而已。

在CRC校验中,最害怕的就是碰撞,只是概率很小条件苛刻罢了。
游客
登录 | 注册 方可回帖
返回