一般而言,数据的传输需要双方预先约定密钥和算法,发送方对原始信息加密再通过网络完成传输,接受方在收到数据后根据密钥和算法完成解密。这中间要防止人为数据窃取、破坏,作为破坏者,需要得到的是加密密钥或者对传输数据进行干扰,使其可靠性降低。对于这些攻击,常看到的解决办法比如数字签名,良好的难以破解的数据加密算法等,其中大多数加密算法基于二次剩余、离散对数和线性同余这些难解算法作为基础。为此本文提出了一种基于正交多项式加密传输算法,能有效具备监测传输中数据伪随机攻击的同时,迸一步增强原来算法的安全度。
一、加密算法构造
正交多项式概念:若首项系数an≠0的n次多项式满足:
就称多项式序列g0(x),g1(X),…,在[a,b]区间带权p(x)正交,并称gn(x)是[a,b]区间带权的次正交多项式。
算法构造:
1、通信双方事先商定(l)中区间[a,b]和p(x)作为双方的密钥,发送方在传输数据前随机选取两个不相等的符合(1)式的多项式gj(x),gk(x)。
2、用正交多项式系数对原始数据使用选定的安全算法进行加密,比如首先用(1)式计算出的加密密钥Aj,Ak对原始数据分别加密后的数据尾,加密与解密算法选取要一一对应且是唯一解的,最好是不可逆Hash算法。
接受方在接到数据后,根据gj(x),gk(x)计算加密密钥Aj,Ak;然后对数据尾分别执行逆解密运算,观察解密后的两个原始数据是否相等,若相等说明数据没有被篡改,否则,存在伪随机攻击。
二、加密算法分析
构造特别要求传送的数据串首是gj(x),gk(x),不相等的信息,这一目的是检测数据在传输中是否有人为的伪造数据攻击。因为gj(x),gk(x)不相等,如果数据首被部分修改,那么一般情况下:
但是,也存在一个特殊的情况,比如对方长时间截取数据串或者连续截取足够多的数据后,会猜测并使用一个在加密中使用过的完整的gi(x)来代替gj(x),gk(x)中的一个,那么此时有:
这样,解密方就会错误地解密出一个不正确地信息,为了避免这个特殊情况,上面使用两个数据gj(x),gk(x)计算出的Aj,Ak对同一原始数据分别加密:
作为数据串的尾。这种设计无论对方是篡改数据头的gj(x),gk(x)的部分数据还是整个数据头或者是数据尾,都将被接收者所察觉。
证明:首先分析数据首的篡改,已知加密与解密运算的关系是一一对应的,且是唯一的,有:
如果gj(x),gk(x)任意一个被篡改为gi(x),那么有:
显而易见,在解密时,解密结果不一致,因为解密的参考对象Aj,Ak发生了变化,从而监测到篡改。对数据尾的篡改,实际上就是对加密信息的改变,分析方式与上相同,解密后信息也发生改变。以上是对数据传输的伪攻击防范措施,对于数据传输的密钥破解这一角度也就是对:
的求解。其中区间[a,b]和p(x)作为通信双方的密钥,敌对方仅仅知道gj(x),gk(x)等正交多项式是很难破解出密钥的,即使对方能获得这一密钥也无法破解加密密钥Aj,Ak对原始数据的加密算法,因为传统的很多加密算法都是很安全的,这里不详细介绍,故该方案是安全的。
小知识之正交多项式
正交多项式是由多项式构成的正交函数系的通称。