-
-
[原创]菜农大叔CRC专题讲座(CRC总结及创新定义)
-
发表于:
2017-5-27 11:57
5597
-
[原创]菜农大叔CRC专题讲座(CRC总结及创新定义)
菜农CRC专题讲座(CRC总结及创新定义)
1.菜农为CRC多项式找双亲
根据“菜农为CRC找兄弟”的结果分析,得到了两兄弟是XOR关系,即母子关系。只要知道某个CRC多项式的母亲,
那么众多兄弟即非特定初值出值与母亲XOR后,即可找到其孪生兄弟!
公式:
兄弟甲 XOR 兄弟乙 = 母亲
或:
兄弟甲 XOR 母亲 = 兄弟乙
兄弟乙 XOR 母亲 = 兄弟甲
故:兄弟甲的初值为零时,那么它的兄弟乙就是它们的母亲!
故兄弟甲初值为零的就是它们的父亲!!!
等式:
父亲 XOR 母亲 = 兄弟甲 XOR 兄弟乙
2.菜农利用5点攻击100%破解CRC多项式
a.4点攻击已经100%破解了CRC多项式,而且是计算而非穷举,同时100%的得到了特定的初值和出值。
菜农将其归类为破解CRC函数即破解第三方CRC计算器。
HotWC3_V1.23版本支持4点攻击。
http://www.21ic.com/tools/HotWC3_V1.23.html
b.5点攻击是在前者100%破解了CRC多项式即CRC权值的基础上,利用第5组非等长明文,
穷举非特定的初值和出值并且100%的破解了初值和出值。
即完成了初值出值碰撞任务,菜农将其归类为破解CRC函数即破解第三方CRC计算器。
HotWC3_V1.23版本不支持5点攻击,必须为更高版本,但菜农暂时不会发布。
c.非等长明文和结果穷举,它与a和b最大的不同在于无法得到至少4个特定结果。
故无法破解其CRC多项式即权值,故必须穷举权值。
而等长明文很难或根本无法破解其初值和出值。故必须通过非等长明文来破解即穷举初值。
所以本破解方法的难度是权值和初值都要穷举,
故运算量巨大!即CRC16相当于CRC32的穷举量。
故一般只能通过经验或猜测标准的CRC权值来忽略对权值的穷举。
3.菜农对CRC碰撞的创新分类
a.CRC碰撞,这是官方的名称,实际上是明文碰撞,即不同的明文得到相同的结果。
HotWC3的具体操作非常简单,在明文处输入明文,点击“运算”得到结果。
再点击“CRC碰撞”,明文被修改!对吗?点击“运算”,结果没有发生变化!
即不同的明文一样的结果,即发生了CRC碰撞。
特别注意:不能没有密文,且密文长度是权值长度的倍数。
b.CRC初值碰撞,这是菜农的创新。即不同的初值,得到相同的结果。
HotWC3的具体操作也十分简单,同CRC碰撞一样,输入明文,点击“运算”得到结果。
修改指定的出值,点击“CRC初值碰撞”,初值会发生变化!再点击“运算”,结果没有发生变化!
不同的初值一样的结果,即发生了CRC初值碰撞!
特别注意:可以没有密文!
c.CRC出值碰撞,虽然也是菜农的创新,但经过HotWC3的测试,一个初值必然对应一个唯一的出值。
因为最后一个密文就是最后的结果,只是输出时和出值XOR最终得到结果。故勉强认为CRC出值碰撞存在。
特别注意:可以没有密文!
d.CRC初值出值碰撞,这个肯定是菜农的重大创新,因为很久以来,菜农都认为CRC多项式确定后,初值和出值肯定成对出现并且唯一。
但是当HotWC3升级到V1.26后,菜农一片茫然……
经过“菜农为CRC多项式找兄弟”后,又进一步为CRC多项式找到了“母亲”……
特别注意:可以没有密文!
4.任意CRC多项式表格和C语言源码自动生成
a.大表
CRC大表实际上就是对0-255即前256个明文(即单个字节)进行初值和出值都为零运算后CRC结果的集合即CRC表格。
大表最大的特定是运算速度快,缺点肯定是占用大的空间。
b.小表
CRC小表实际是对CRC大表的抽取16个明文对应的结果的集合即CRC小表格。
小表最大的特定是占用很小的空间,缺点是运行速度比大表慢一倍。
c.C语言源码
HotWC3其中一大特点就是可以自动生成CRC表格和C语言源码。
CRC表格前面已经叙述,而CRC源码就是根据CRC大表或小表对应生成在任何C语言编译器上不经过任何修改即刻运行的代码。
它还有一个特点就是在明文中输入需要验证的非文本的HEX码或文本格式的英文或汉字或其他众多格式的编码,
并且也嵌入到生成的C语言源码中,并且标注了CRC验证值。
HotWC3在生成后提示已经验证通过,放心使用。
若不信可将其全部复制粘贴到C编译器中,编译并运行和验证。
特别提示:
由于一般的C语言编译器汉字只支持GB2312-80标准,故需要明文为汉字时,必须用IE核的浏览器打开HotWC3!
同时选择“文本”和“GB2312-80”编码,否则结果肯定和你运行的不符!切记!
5.CRC逆运算
HotWC3最大的特点也是它成功之处就是有密文编辑框和还原键按钮。
虽然严格上说CRC不属于单向散列函数,应该属于陷门单向散列函数。
https://zm6.sm-tc.cn/?src=l4uLj8XQ0JOQkZiajdGMj56cmozRmpqPiNGckJLRnJHQno2LlpyTmozQno2LlpyTmtCWi5qS0MrHy8vP&uid=0dbc8044a1784dc6090d080e62d22db5&hid=bf1dbf0ef87fdb3c9c964c663fbb2994&pos=5&cid=9&time=1495831177417&from=click&restype=1&pagetype=0000000000000402&bu=web&query=%E9%99%B7%E9%97%A8%E5%8D%95%E5%90%91%E6%95%A3%E5%88%97%E5%87%BD%E6%95%B0&mode=&v=1&uc_param_str=dnntnwvepffrgibijbprsvdsdichei
单向散列函数定义:
任意长的输入消息串变化成固定长的输出串且由输出串难以得到输入串的一种函数。这个输出串称为该消息的散列值。
CRC(Cyclic Redundancy Check):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。
占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(CRC 并不是严格意义上的散列算法,
但它的作用与散列算法大致相同,所以归于此类)。
单项陷门函数
所谓单向陷门函数是这样的函数,即除非知道某种附加的信息,否则这样的函数在一个方向上容易计算,而在反方向上要计算是不可行的。
菜农通俗地解释:
任意长度的CRC明文都会被散列为固定长度的CRC结果。
CRC正运算很容易,除非知道了CRC可逆,否则无法逆运算。
在HotWC3上,CRC正运算的操作就是点击运算按钮,CRC逆运算的操作就是点击还原按钮。
菜农总结并给出了CRC可逆的判定方法:
CRC多项式中,包含“+1”的CRC可逆,否则CRC不可逆。
CRC权值中,左移CRC权值最低位为“1”即奇数时,CRC可逆,否则CRC不可逆。
右移CRC权值最高位为“1”即“负数”时,CRC可逆,否则CRC不可逆。
6.HotWC3自带大量的运算和验证工具
在我们需要运算时,最常见的肯定是XOR运算,其次就是取反(非)运算等。
有些常用编码如UTF-8以及BASE64,UU码等,这些一般计算器都不会或提供的如此多。
实际上HotWC3的CRC运算按钮和还原按钮就是一个编码格式转换工具。
例如字符串“12345678”的HEX码是什么?
a.功能选择“CRC基本运算”。
b.选择“文本”。
c.选择“ascii”编码。
d.将字符串“12345678”输入到明文编辑框。
e.点击“运算”。
f。不选择“文本”即不打勾“文本”。
g.点击“还原”,明文变为“3132333435363738”。
即字符串“12345678”的HEX码为“3132333435363738”
特别注意:
GB2312-80需要用IE核的浏览器打开HotWC3!
HotWC3有IE核自动检测,选择框“IE浏览器”被打勾表示是用IE核的浏览器打开的HotWC3,否则一定是非IE核的浏览器打开的HotWC3。
再例如汉字字符串“菜农CRC计算器”的HEX码是什么?
方法一样,只不过字符编码需要选择汉字编码的,如果在WINDOWS上编写程序,应该按上面的选择。
“菜农CRC计算器”的HEX码是"B2CBC5A9435243BCC6CBE3C6F7"
菜农-B2CBC5A9
CRC-435243
计算器-BCC6CBE3C6F7
7.众多的CRC参数编辑框
实际上HotWC3最大的特色就是可以任意CRC。
它也是HotWC3能存活十数年的原因所在。
它有众多的CRC参数(多项式,简写式,权值,方向,CRCn,初值和出值)可以任意编辑修改。
你可以任意选择一个标准的CRC,然后对它进行修改,以便得到新的CRC。
HotWC3支持16个标准的CRC,而且可以选择32种HotCRC。
故HotWC3支持CRC4的整数倍的CRCn,即CRC4,CRC8,CRC12,CRC16,CRC20…CRC32…CRC64。
修改“多项式”编辑框,可以直接改写多项式即权值和方向及CRCn。
修改“简写式”编辑框,可以直接改写所有CRC参数!
“权值”,“初值”和“出值”编辑框只能修改自己。
特别注意:
点击“权值”按钮,可以使权值“反转”,即数据流移动方向反转。例如1021反转为8408。
8.非常暴力的CRC穷举
由于HotWC3具备了CRC还原和各种CRC碰撞和破解任意第三方CRC计算器的功能积累。
HotWC3采用了灵活多变的命令行方式的穷举规则,做到了理论上100%破解任意类CRC通讯协议的能力。
HotWC3只需要用户采集的明文和结果流,不管是任意组合,只要遵从CRC运算法则,则HtWC3将会用比一般破解工具更快的方法破解。
因为HotWC3内部是在智能运算而非单纯的穷举。
菜农为了不破坏目前工控中大量采用的类CRC通讯协议,故在新版本中废除了CRC穷举的暴力功能。
如果真为了“学习”某个通讯协议,可以联系菜农HotPower@163.com。QQ:1270688699。
9.关于HotWC3的开源问题
菜农为了公开算法,用了网页编程,即HotWC3是跨平台的,可以任何操作系统下运行,即手机,电脑和平板等。
网页文件是文本格式,即用任意文本编辑器都可以打开并修改。
HotWC3面板上的16种标准的CRC操作非常方便,直观,你如何有其他标准的CRC或需要私人订制,可以先用4点攻击方法逆向出它的“CRC简写式”,
然后找一个面板上需要替换的标准的CRC,
例如crc16_xmodem,点击它,得到“CRCL16_1021_FFFF_0000”,在HotWC3_V1.23.html文件里搜索替换即可。
所以,HotWC3本身就是开
源的。
菜农HotPower@163.com 2017.5.27 于西安雁塔菜地
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)