首页
社区
课程
招聘
[原创]CRC密钥碰撞及S盒的遐想
发表于: 2009-7-11 12:37 6953

[原创]CRC密钥碰撞及S盒的遐想

2009-7-11 12:37
6953
再如DES的8个S盒。(6入4出)
每个S盒有4行16列,8个S盒共32行16列。
根据数学的“全排列”定义,DES的S盒排列数应该有16!=20927789888000
故此密码的编码只是其全排列的很小一部分。

CRC4和DES的S盒都属于这个全排列,CRC4有16行(初值、权)16列(明文)。
可惜在CRC4的一行(表)中找不到DES的S盒的一行~~~
但我们可以在CRC4表中到处找到S盒的“身影”。


CRC碰撞一般指CRC明文的碰撞,即CRC密钥确定时不同明文流所产生同一CRC结果的现象。

而CRC密钥碰撞是指一对CRC明文和CRC密文确定时,有多少个CRC密钥与之配对的问题。

站在CRC密钥碰撞的立场上,“CRC明文碰撞”是“一对一”的关系,而“CRC密钥碰撞”是“多对一”的关系。

前者是CRC密码的问题,后者是CRC运算的问题。故菜农自贺的是后者

本文不再讨论CRC明文碰撞问题。

在CRC密码体系中,成员包括CRC密钥(初值、权及方向)和明文及密文三个主要部分。算法为基本的CRC运算
即简单的移位和异或运算。

CRC一次运算的结果实际是在密钥下对应的一组结果即明文和密文对。
我们可以把这样的操作视为一个广义的“表”,如同S盒或特殊数组及矩阵一样。

在密钥即表的行列确定时,必得到一组唯一无重码的成员即明文和密文对。即“一对一”的关系。

但是CRC或S盒都只选取了这张全排列的广义表的其中一小部分,故不同的密钥就比对应同一结果。
即“多对一”得关系。

如S盒的“6入4出”。2^6中选2^4,必有2^2个冗余,即有4次密钥碰撞概率。
其中"6入4出"即4行(2位)和16列(4位)对应于4位输出(0~15)
由于DES的S盒“非线性”排列,即每个S盒的某行某列对应的值无重码,故其密钥(行,列)碰撞次数为0。
但是8个S盒之间是有密钥碰撞即行列碰撞,只是DES用轮次错开碰撞而已。

再以CRC4加以说明:
已知明文0x01,密文0x02。那么有对少个密钥即初值和权与之配对???
这实际是个类同S盒的“6入4出”的"12入4出"问题。故必有2^8个CRC密钥碰撞概率。
其中"12入4出"即4位初值、3位权、1位方向和4位明文对应于4位密文。
由于CRC4表可逆及排列有序,故CRC4必有2^4个CRC密钥碰撞次数。
当密钥确定(如同S盒的某轮),CRC4的某一密钥即“S盒”内每个明文也只对应一个密文,
故和S盒一样,此时其密钥(行,列)碰撞次数也为0。

CRC4中的16组碰撞数据列举如下:
          方向:    左移CRC4           右移CRC4
明文0x01  初值:3 E 9 6 2 9 C 5    3 7 B F A C 6 0  
密文0x02  权值:1 3 5 7 9 B D F    8 9 A B C D E F

从表中可以看到:

初值=0x03 权=0x01 左移CRC4 明文0x01 得到密文0x02 即CRC校验结果0x02
初值=0x06 权=0x07 左移CRC4 明文0x01 得到密文0x02 即CRC校验结果0x02

初值=0x03 权=0x08 右移CRC4 明文0x01 得到密文0x02 即CRC校验结果0x02
初值=0x06 权=0x0E 右移CRC4 明文0x01 得到密文0x02 即CRC校验结果0x02

故得此结论:
在CRC密钥不确定即“一次一密”时,与明文及密文有关的所有攻击手段是“徒劳”的。
因为它是“多对一”即不可逆的。(这就是CRC密码或S盒应用的目的所在)

CRC密钥碰撞的“碰撞次数”恒为2^N。

即DES的S盒有0次密钥碰撞,而CRC4恒为16次CRC密钥碰撞,CRC8恒为256次CRC密钥碰撞...

可见DES的S盒的0次“碰撞”比CRC密钥碰撞要少许多,只不过是选择的“广义表”不同而已。
CRC的“广义表”依据CRC运算规则排列,S盒的排列规则只能去问美国大鼻子老头了~~~

实际“密钥碰撞”的次数愈大,逆向的难度就更大。因为逆向最怕的就是“碰撞”即“多对一”。
从以上CRC4的“S盒”分析,当CRC密钥中的权确定后,即DES的“S盒”确定后,
CRC密钥中的初值(类同S盒的行)对应的CRC明文(类同S盒的列)内所有数据都是从0到F散列开的。
所以,分析CRC4密码和S盒是“完全一样”的。

“CRC密钥碰撞”是菜农选择CRC做HotWC3密码系统中的“S盒”最重要的原因之一。
也是菜农回应某些人嘲笑“CRC太简单”的“论据吧”~~~
分组加密体系的DES的S盒是“6入4出”,一轮8个S盒就是“48入32出”,而在HotWC3中,
由于是流加密体系,故其“S盒”即CRC8为“24入8出”.

若以流加密来衡量,DES的8个S盒实际为“12入8出”,比CRC8的“密钥碰撞”概率还小,
故分组密码都需要N轮,而流加密往往只需或只能(传输要求)一轮即可。

S盒“号称非线性”菜农绝不认同!!!它的排列规则肯定类同CRC4.(因为它跑不过数学的排列与组合)
S盒与CRC4同属于一个“广义表”,难道它就无算法可循吗???

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
终于做到沙发啦,哇卡卡
2009-7-11 12:39
0
游客
登录 | 注册 方可回帖
返回
//