HotWC3密码分析
可逆CRC8内核简要说明:
CRC8家族成员一共有7个成员:
1. CRC8权值(Poly),即CRC多项式。它是CRC内核置换算法的核心。
2. CRC8方向(Dir),分左移CRC8L或右移CRC8R运算。
3. CRC8初值(Init),它只对输入明文流的第一个字节做异或(XOR)运算。在运算中由上次密文流输出的最后一个密文字节提供。
4. CRC8出值(XorOut),它只对输出密文流的最后一个密文字节做异或(XOR)运算,在此前无用。
5. 明文,它在运算中只提供需要加密的数据字节流。
6. 密文,它在CRC8运算中,替换下一个字节运算时的初值,或可理解为和下一个字节的明文XOR,即做“差分检测”。
7. 结果,它是CRC8密文流输出最后一个密文字节与出值XOR的结果,在HotWC3密码里,它才是真正每次加密一个字节的密文输出。
CRC8可逆“定理”的两种表达方式:
1. 多项式
在多项式中包含“+1”时,CRC8可逆,否则不可逆。
2. 移位算法
在左移CRC8L运算时,权值最低位D0为“1”时,CRC8L可逆,否则不可逆。
在右移CRC8R运算时,权值最高位D7为“1”时,CRC8R可逆,否则不可逆。
CRC8的碰撞问题:
在CRC8运算中,由于权值、方向、初值和出值都保持不变,故一个字节的明文被置换(CRC8正运算运算)为一个字节的密文,即不会发生CRC8碰撞,故明文和密文是置换关系或字典查表的一对一关系,此时的CRC8正运算就是CRC8的加密过程。
但对于明文流是两字节时,就会发生256次CRC8碰撞,故此时CRC8为单向散列函数,即多对一的关系,又因为CRC8运算密文流是下次的初值,将与下次的明文XOR即做差分检测,所以此时CRC8不能作为密码。
同理,对于明文流是三个字节时,将会发生256*256=65536次CRC碰撞,以此类推。
多种CRC8碰撞:
菜农将目前流行CRC碰撞的说法命名为“CRC明文碰撞”,即不同的明文得到相同的结果。
在CRC8中,实际还存在其他碰撞:
权值碰撞: 保持其他6个CRC家族成员不变时,不同的权值得到相同的结果
初值碰撞: 保持其他6个CRC家族成员不变时,不同的权值得到相同的结果
出值碰撞: 保持其他6个CRC家族成员不变时,不同的权值得到相同的结果
由于HotWC3密码的置换内核CRC8被设计成为“一次一密”,即CRC家族成员权值、方向、初值和出值在每次加密或解密一个字节后都必须被全部更换,故可能发生其他成员不停的变化,而明文和密文都不发生变化。
这种“碰撞”就是单向散列函数的表现,故即使知道CRC家族成员的明文、密文和结果,也不可能知道其他CRC家族成员权值、方向、初值和出值。
所以,像可逆CRC众多家族成员这样的内核确实很难找到。
因为密码的核心就是发散和混淆,故置换是一种玩魔术的技艺,例如目前众多的分组密码,有的需要很多轮置换,“不把人搞晕不是本身”,但是计算机是不会晕的。
而可逆的CRC天生就是置换高手,例如CRC8就有2^8=256组置换表格。
同理,CRCn就有2^n组置换表格,其中n=8,16,24,32,40,48,56,64,…。即作为密码使用,n为8的整数倍。
HotWC3密码分析可用攻击方法:
1. 唯密文攻击
所谓唯密文攻击是指,攻击者只知道一个或多个需要要攻击的密文(通常包含消息的上下文)。
注:
这个对HotWC3无能为力,因为它的置换是可逆的CRC8正运算(加密)或逆运算(解密)。
如上分析,只知道密文这一个家族成员,想再知道其他6个家族成员几乎是不可能的。
即使这样变为可能,在HotWC3密码的密钥流的不规则移动和8个XOR的阻拦下,特别是差分检测,它同时与明文和密文都有关系,故有再多个密文也是徒劳,再要想知道128位密钥是绝对不可能的。
2. 己知明文攻击
所谓己知明文攻击是指,攻击者知道一些明文/密文对,若一个密码系统能够抵抗这种攻击,合法的接收者就不需要销毁己解密的明文。
注:
由于HotWC3有流密码的特性,故只要明文流某位置上出现一个字节的错误或不同,密文都将被迅速发散,即使明文呈现周期性变化,密文也不会呈现对应的周期性发散。
3. 选择明文攻击
所谓选择明文攻击是指,攻击者可以选择一些明文及对应的密文(公钥密码体制必需能够抵抗这种攻击)。这个攻击可以假定攻击者可以使用密码机子,选择明文得到相应的密文。
注:
由于HotWC3的流程框图及算法完全公开,解密者可以使用HotWC3选择一些明文及对应的密文。
而且HotWC3更是为解密者提供了加密过程或解密过程密码分析。
但HotWC3内核CRC8运算时,要想从“入口明文”知道真的明文是非常困难的,因为有8个XOR把关。
4. 选择密文攻击
所谓选择密文攻击是指,攻击者可以选择一些密文并得到相应的明文。这个攻击可以假定攻击者可以使用密码机子,选择密文得到相应的明文。
注:
同4分析。
HotWC3同时拥有加密和解密功能,而且具备了一定程度分析加密或解密过程内部的变化规律。
HotWC3密码在设计时,就构造了只能穷举的假设框架结构,参考HotWC3密码流程框图。
分析类型:
1. 强力攻击
强力攻击包括查表(字典)攻击,时间-存储权衡攻击,字典攻击以及穷举搜索攻击。
由于HotWC3采用“一次一密”,即每次CRC多项式等家族成员都在随机变化,故明文的长度就是长度的容量,故没有此容量的表格(字典)提供给**者。
2. 线性密码分析
作为一种己知明文攻击方法,线性密码分析方法叫的本质思想在于,通过将一个给定的密码算法有效且线性近似地表示出来以实现破译。
从CRC置换的角度看问题,菜农认为DES的“S盒”“16入4出的置换”也就是CRC4的档次。
而HotWC3的置换内核是CRC8而且是128位密钥。
最重要的是HotWC3可随意扩大置换的内核,即选用更大的CRCn做分组密码,而且增大密钥的长度更不是难事。
3. 差分密码分析:
差分密码分析的本质思想在于,通过分析相应明文对差值和密文对差值之间的相互影响关系,来得到密钥的一些比特信息。
当加密或解密内核为异或时,差分攻击是个不错的选择,由于明文对差值和密文对差值都为常数,故可以推导出密钥的差值,所以该设计是不安全的。
但是HotWC3采用CRCn内核,它的密钥实际就是CRC多项式(简写式),而且不是一个简单的异或过程。
在推导CRCn内核时,由于CRCn碰撞和CRC单向散列,故密钥的差值无法确定,即无法差分攻击。
而且,HotWC3密码在设计时,就建立了明文和密文的“差分检测”,就彻底防止了“差分密码分析”。
小结菜农对HotWC3密码分析的结论是无法技术解密,即只能用暴力的方法来穷举通过HotWC3加密的密文。
故穷举的时间就和密钥的长度位数及计算机的运算数据处理能力有关联了。
HotWC3密码的程序运行的效率:
在CRC运算中,大多采用查表法,即每个权值对应一张表格(数组),与初值和出值无关,因为初值只影响明文(XOR),出值只影响密文(XOR)。
因为需要CRC8可逆,故左移CRC8L和右移CRC8R各有128个权值可用,即256个权值256张表格,每张表格里有256个字节的数据。
故总共的表格空间为256*256=65536。
但是对于HotWC3就没什么效率了,CRC8的8次移位是最为快捷的。
再看看HotWC3密码流程框图,它只有异或及移位运算,效率非常高。
HotWC3密钥流单向散列函数的选取:
在HotWC3的密钥设置中,系统默认了32位的用户密钥和32位的扩展密钥的特定日期。32位的日期密钥默认了打开HotWC3开始工作的日期。
8位的天地密钥、星期密钥及16位的三角密钥这3个密钥是由默认打开HotWC3开始工作的日期进行的单向散列函数的转换。
天地密钥由百年和年通过“天干地支60年一甲子”的单向散列函数组合转换得到。
星期密钥由“菜农星期公式”,“某月的最大天数”的单向散列函数组合转换得到。
在这里菜农公开“某月的最大天数的最佳算法”的答案是: 星期差或周差。
当最小月28天时,下月的今天的星期几一定和今天一样,因为28可以被7(一周)整除,故28天时,星期差为0。
当某月有29天时,下月的星期几就要推后一天,即星期差为1。
同理,30天月差为2,31天星期差为3。
故某月的最大天数=28+星期差。
为了防止出现负数,故完整的“算法”为:28+(7+星期差)%7;
例如今天是周六,下月是周日(0),故星期差为-6。
所以,最大天数=28+(7-6)%=29天
16位的三角密钥是由一个字节8位的特定直角三角形勾股定理(平方运算,单向散列陷门函数)和三角密码(可逆)扩展为两个字节16位的扩展函数组合转换得到。
总结:
由于HotWC3密码是流密码和分组(8位)密码结合的产物,而且其CRC8内核的多参数(成员)丰富组合变化,世上很难再找出如此内核!!!
再参见HotWC3密码流程框图,它将128为密钥分为6大部分:
1. 天地密钥8位,它实际是一个初值密钥,在加密或解密过程中,不断被差分检测XOR,即检测明文和密文。
2. 星期密钥8位,它实际是一个初值密钥,在加密或解密过程中,不断被差分检测XOR,即检测明文和密文。
3. 三角密钥16位,它实际是一个固定周期自身变化的密钥流,不受其他密钥流或差分检测的影响。
4. 用户密钥32位,它被分为两部分,承担三角密钥可能是弱密钥的安全问题。
5.扩展密钥32位,它被分为两部分,承担三角密钥可能是弱密钥的安全问题。
6. 日期密钥32位,它被分为两部分,承担三角密钥可能是弱密钥的安全问题。
7. 虚拟的差分检测密钥8位,它主要承担监测明文和密文,并再与天地密钥和星期密钥XOR。
它可以保证“随机的差分检测”让天地和星期密钥再随机起来,保证了整个密钥流的“真随机”。
而且HotWC3自带弱密钥分析,这样在加密或解密中就杜绝了“伪随机”密钥流的出现概率,即“弱密钥”的出现概率。
关于HotWC3自带的“密码分析”功能:
1. 弱密钥分析检测
由于CRC运算的特性,权值包含“1”的位数需要进行CRC置换,否则CRC运算就是8位自身的循环移位,即不置换,明文就是密文。
所以,当128位密钥全为0时,明文就是密文,密文就是明文,故无密而言。
所以,当某个密钥全为0时,此密钥就不随机了。
在HotWC3密码流程中,由于三角密钥自身交叉循环,故其绝对不能全为0,否则它就不起任何作用。
此时用户和扩展密钥替代了它们。
天地密钥和星期密钥可以为0,但降低了密钥的长度,差分检测将会替代它们。
由于HotWC3密码最终的置换由随机的CRC8运算完成,故对密钥流的随机密钥分析就被转化为对随机CRC运算即对CRC8简写式流的分析。
假如在明文或密文长度内,CRC8简写式流不呈现周期性变化,那么就可以认为这128位密钥是安全的,否则就可判定此密钥是“弱密钥”,HotWC3可测试。(加密或解密时,增加弱密钥测试选择功能)
差分检测保证了必须100%知道天地密钥和星期密钥它们各自的初始值。才能在同时拥有明文和密文时降低**的难度。
正因为如此,差分检测是HotWC3密钥是“真密钥”的基石,因为再长的密钥,按一定规律的循环移动,理论上无穷时,必然呈现周期性变化,故不可能保证是真随机密钥。
但差分检测就可以保证在明文长度的变化里,明文和密文组成的“随机密钥”必然是真随机,导致了HotWC3密码里的天地密钥和星期密钥的真随机,从而也保证了整个128位密钥的“真随机”。
故解密者必然首先从其下手。
但天地和星期密钥是初始密钥,只用一次,故必然只能采用穷举来**天地和星期密钥。
由于CRC多碰撞原理,故无法单一地穷举天地和星期密钥,最终被迫穷举整个128位密钥。
这就是设计HotWC3密码的初衷和愿望。
关于HotWC3密码的命名:
菜农在网上“出道”的网名叫“HotPower”,看单词的拼写应该知道菜农是干什么的,有何“功底”,故有“Hot”的密码前缀。
菜农独立推导出了“菜农星期(Week)公式”,故有“W”。
菜农用编写程序的方法,反推导出了CRC的逆运算,故有“C”。
菜农独立数学归纳出了特定整数直角三角形(3)勾股定理,故有“3”。
所以,就有了“HotWC3”的密码命名,特别注意大小写。
关于HotWC3密码机(HotWC3网页文件):
HotWC3可以在任何平台下运行,即电脑和手机及任何计算操作系统。
它的跨平台的成功主要归功于HotCode字符编码的诞生,在ASCII时为1个字节,其他任何字符编码都为2个字节。
这样就可以做到了字符转换前后字节大小不变,特别适合于密码环境,保证了最高的字符转换后的效率。
HotWC3密文可以选择电子邮件编码: BASE64,UU,XX,QP。
这样就可以保证以最高的编码效率在网络上进行字符传播。
前三个的压扩比是3:4,即明文3个字节,加密后的密文4个字节,效率非常高。
故明文推荐使用用菜农的HotCode字符编码,密文推荐使用UU码。这样的组合效率最高。
HotWC3自带最强大的超级CRC计算器,它具备**CRC的功能,可以100%对CRC类通讯协议进行技术穷举,而非暴力穷举。
它具备对CRC各种碰撞的操作。
HotWC3密码具备基本的加密和解密功能。
它还带有许多实用功能,如明文的CRC32校验,密文功能标题,弱密钥的测试(后续版本)
菜农HotPower@163.com 2018.4.18 于西安雁塔菜地
http://www.hotpage.com.cn/hotwc3/
|