本帖最后由 hotpower 于 2018-4-24 23:15 编辑
HotWC3问答
1.什么是CRC
CRC是冗余校验码,专用于数据校验。一般认为CRC是单向散列函数,是不可逆的。如同MD5。
例如数据1,2,3,若用简单的累加和,那么
1+2+3=6
3+2+1=6
…
故结果都是一样的,即发生了“碰撞”。
而CRC内核是移位运算,即左移或右移。
故数据位的变换,就会带来结果的变化,即校验和的不同。
所以CRC比累加和更适合于数据校验。
2.HotWC3密码的特点
例如数据1,2,3,若采用加法,即被加数+加数=和。
1+2=3。
假如不知道加法的逆运算即减法,那么就只能用穷举。
即:
1+2=3。
2+1=3。
发生了“加法碰撞”,即不同的加数得到相同的和。两个只有一个是对的,你只有猜测了。
但若知道加法的逆运算即减法,那么在已知“和”即密文时,若再知道一个加数,那么就很容易得到另外一个加数了。
即加减法有三元,知道其中的两个就可以得到第三个。
以上就是最简单的“加密”和“解密”原理。
而在密码中,流密码的内核就是一个简单的XOR(异或)
运算。分组密码的内核就是布尔函数,即“S盒”,简单说就是查表。
流密码最重要的是要保证密钥流的随机,即在一定长度下,不呈现周期性变化,即能保证“一次一密”。
分组密码的“S盒”起到发散和混淆的作用,但必须保证一定轮次的循环移位,而且构造“S盒”难度很大。由于它只有一个“信号源”,故多少轮次真没多大作用。
而HotWC3密码是流密码+分组的密码体系。
它的密钥流由6大部分的子密钥协同环移并用差分检测来同步随机密钥流的周期,以保证随机的明文和密文反过来控制密钥流的周期。
它的“S盒”就是可逆的CRCn,其中n=8,16,24,32,40,48,56和64。(必要时可以任意扩展)。
例如:
CRC8内核对应128位密钥,每次加密或解密一个字节,即分组8位。
CRC16内核对应256位密钥,每次加密或解密两个字节,即分组16位。
CRC64内核对应1024位密钥,每次加密或解密8个字节,即分组64位。
从HotWC3流程框图观察,其被设计为“一次一密”。
从HotWC3“密码分析”中可以看到最重要的“CRC8简写式”在整个明文长度里是真随机的。
3.HotWC3密码是否安全
由于CRC的特点,从“CRC8简写式”中可以看到,它有多个参数(权值,方向,初值,出值)。
在选择明文攻击中,即知道某特定明文与密文对时的攻击。
在CRC中,由于它的“陷门”即可逆的发生,只要给出4组明文(待校验的数据流)和密文(校验过程的结果流)对,HotWC3会准确地计算出CRC的权值即CRC多项式。这主要是“本次CRC的密文是下次CRC的初值”带来的“漏洞”,它被菜农100%**。
但是HotWC3采用的是“一次一密”,这样就避免了像CRC一样,被“选择明文攻击”而**。
再CRC简写式的多参数,在已知全部明文和密文的情况下,也无法得到加密或解密过程中使用的“CRC简写式”的“流”,即原始的密钥。
故只能穷举,不能技术**。
结论:HotWC3是“设计上安全”的。
4.HotWC3密码的应用场合
由于HotWC3流密码的特点,即每次可加密或解密一个字节。对于二进制而言,加密和解密是1:1的,即明文和密文的长度是一样的。
但为了能在网络上通讯,就必须采用可打印字符编码传输。
HotWC3密文有多种编码选项,推荐采用XXCode编码,它的明文和密文的长度比是3:4。
目前是字符编码中压扩比最高的一种。
由于HotWC3的内核可以任意选择,即密钥长度可以任意扩大且能保证分组时密钥的随机。
结论:
1. 特别适合外交密码和军事密码。
2. 特别适合于社交应用平台上传输密文字符串。因为它的密文编码有多选择,特别是它有不加密的标题醒目提示。
3. 特别适合传输协议通讯。因为HotWC3内核采用的是CRCn,故特别适合于通讯的高速处理,很容易将可逆的CRCn做成芯片,用于工业控制,其经济效益不可限量。
(目前DSP,ARM,MCU都有集成的CRC模块)
在软件处理上,由于只需要做移位和XOR这两种最原始的运算,加密或解密速度会非常快捷,因为HotWC3采用“一次一密”,故无需“多轮循环”。
菜农HotPower@163.com 2018.1.31 于西安雁塔菜地
http://www.hotpage.com.cn/hotwc3/
|