首页
社区
课程
招聘
[原创]图解CRC编解码矩阵及解码矩阵列坐标“CRC碰撞”
发表于: 2009-7-24 15:23 11533

[原创]图解CRC编解码矩阵及解码矩阵列坐标“CRC碰撞”

2009-7-24 15:23
11533
实际碰撞很简单,但必须心中虚构“2个CRC编解码矩阵”,碰撞会在CRC解码矩阵的列中产生。
下图列中会看见“红蓝圈发生的碰撞”。







全部的CRC4编解码矩阵图
CRC4GIF.rar

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
实际很简单,这要和CRC运算的规则有关系:
CRC运算由初值,权值,明文流和密文流四部分组成。
每次一个完整的CRC运算由初值,权值,一组对应的明文和密文。

特别注意:
CRC运算的结果即密文将作为下次CRC运算的初值或整个CRC运算的校验和。

为了完成“CRC碰撞”,就至少需要2对明文和密文。
最后1对中的密文就是我们要求碰撞的校验和。

例如(左移CRC4,权=D,想碰撞A):

第1步设想的模板:
初值:0  输入:YZ
权值:D  输出:XA

根据CRC的性质,输出中的密文X就是我们准备的“碰撞种子”。

密文X的初值=0,而且又是明文Z的初值。

第2步任选一个“碰撞种子”,如X=8.
初值:0  输入:YZ
权值:D  输出:8A

从下图中的CRC解码矩阵(CRC逆运算),可以查表:

明文Y=左移CRC解码矩阵D[初值0,密文8]=E
初值:0  输入:EZ
权值:D  输出:8A

第3步用密文8做为明文Z和密文A和CRC初值得到明文Z
初值:8  输入:Z
权值:D  输出:A

从下图中的CRC解码矩阵(CRC逆运算),可以查表:
明文Z=左移CRC解码矩阵D[初值8,密文A]=B
初值:8  输入:B
权值:D  输出:A

经过3次运算就得到了X=8,Y=E,Z=B:

填入
初值:0  输入:YZ
权值:D  输出:XA

得到
初值:0  输入:EB
权值:D  输出:8A

即第1个“碰撞种子”X=8得到明文EB,校验和=A

同理再任选一个“碰撞种子”X=9,得到:
初值:0  输入:6A
权值:D  输出:9A

故EB和6A后会得到同一个校验和A,即发生了“CRC碰撞”。

以上分解了“CRC碰撞”的过程,用工具只要填入不同的“碰撞种子”,
点击“还原”即可得到相同的校验和及对应的明文流。

2009-7-25 08:37
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
等我学好了,再来拜读。
2009-8-3 17:44
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
建议菜农去弄个嘉宾版主当当。
2009-8-3 17:47
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
已升级到128位流密码体系。
点击直接运行: 128位HotWC3/CRC通用网上演算器V3.08

2009-8-10 23:06
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
6
请问你的流程图+一些文字注解是用什么画的?
2009-8-10 23:08
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
CRC编码矩阵与CRC编码表之间的关系如下:(其中:初值为上次的密文)
密文=CRC编码矩阵[初值,明文]=CRC编码矩阵[上次的密文,明文]
密文=CRC编码矩阵[0, 初值 xor 明文]=CRC编码表[初值 xor 明文]
密文=CRC编码矩阵[0, 上次的密文 xor 明文]=CRC编码表[上次的密文 xor 明文]
明文=CRC解码矩阵[初值,密文] = CRC解码矩阵[上次的密文,密文]
明文=初值 xor CRC解码矩阵[0, 密文] = 初值 xor CRC解码表[密文]

目前教科书和网上流传的CRC查表法可归纳为:(注一般为左移CRCN)
密文=CRC编码表[((初值 >> (N-k)) ^ 明文) & (2 ** k - 1)] ^ (初值 << k)
其中N为CRCN,即CRC4,CRC8,CRC16,....k=4,8,16,...  **表示乘方运算 ^表示异或运算 >> <<表示移位
    N >= 4,一般取N>=16,k=8,即256个数据一个CRC表。
2009-8-10 23:14
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
请问你的流程图+一些文字注解是用什么画的?


Visio的“文本工具”。

本想上传这个框图的源文件HotWC3.vsd,可惜本论坛在vista下不允许
2009-8-10 23:19
0
雪    币: 107
活跃值: (172)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
9
多谢LZ。不错的工具。
2009-8-12 12:38
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
http://www.21ic.com/tools/HotWC3_V1.13.html

新版本已经去掉了这方面的研究,真有点后悔。
让人眼晕!
2015-9-29 22:07
0
游客
登录 | 注册 方可回帖
返回
//