超级CRC计算器HotCRC中的CRC出值碰撞有什么用途

更新时间:01-28 教程 由 攻心 分享

超级CRC计算器HotCRC中的CRC出值碰撞有什么用途?

HotCRC计算器中有多个碰撞,而目前官方的只有一个“CRC碰撞”,即不同的明文(待校验数据流),相同的结果(校验和)。

CRC出值碰撞是根据CRC逆运算,在明文不变,结果不变,指定出值后,逆运算出“初值”。

由于数字上将CRC校验划归为“单向散列函数”,故它在理论上是没有逆运算的。

但是菜农找到CRC的“陷门”后,即明文长度等于权值长度后,即可从“密文”中逆运算出“明文”。

由于明文和初值满足交换律,故在明文长度是权值长度的整数倍时,即最后一组明文长度等于权值长度时,此时初值可以用逆运算得到。

即可以用“CRC出值碰撞”求初值。

CRC出值碰撞最大的用途就是“保护版权信息”不受破坏。

在一般的CRC保护应用上,都是有明文和校验和两部分构成保护机制,它的依据就是CRC算法是不公开的,或是很难逆向的。

利用CRC出值碰撞保护原理:

令校验和恒为0,出值恒为0。已知被保护的明文,还有逆运算后的初值(由HotCRC求出)。

因为在保护程序里,运行的是CRC正运算,故对明文计算CRC后更为0。

然后用这个“0”到处异或,例如对LED或LCD字符串输出时异或这个“0”,字符输出不会发生变化即错误。

为何要这个“0”呢?

因为它非常了对校验和验证的分支!即对校验和判断的程序,故阻止或加大难度了逆向工程。

特别指出,当明文长度不为权值长度的整数倍时,即最后一组明文长度小于权值长度,故初值和明文不满足交换律,故没有逆运算。

此时的初值,攻防双方都必须用正运算对初值进行穷举!以求出初值。

强烈推荐利用出值碰撞保护版权信息时,明文长度不要选择是权值长度的整数倍!

声明:关于《超级CRC计算器HotCRC中的CRC出值碰撞有什么用途》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2292103.html