本发明涉及信息安全领域,特别涉及一种基于超球面的多变量公钥加密/解密系统及方法。
背景技术:
密码技术是信息安全的核心和基础,广泛应用于网络通信、电子商务、银行、国防军事等领域。密码技术包括对称密码和非对称密码,非对称密码也称为公钥密码。目前公钥密码的安全性主要依赖于大整数分解和离散对数求解等困难问题,如RSA、ECC等。然而,自提出在量子计算机上能够实现大整数分解和离散对数求解的方法后,这类传统的公钥密码便受到巨大的威胁,影响到各个行业。因此,人们致力于寻找一种能够抵御量子计算机攻击的密码系统以满足信息安全的需求,并将这类系统称为后量子密码,而多变量公钥密码便是其中的一种。MPKC在后量子加密方案中占据重要位置,现存的MPKC方案几乎都是不安全的,原因在于随机设计的一个二次方程没有门限,因而不能用于加密。而对应的中心映射生成的数学结构,一般都能推导得知其中心映射(即没有隐藏),从而使得很多MPKC方案不仅仅基于MQ问题,还存在结构问题,如MI,Square,三角方案等。因此,设计一个隐藏的,但又存在门限的中心映射对MPKC方案设计非常重要,目前如此设计的方案包括HFE,ABC等等。前者的中心映射虽然存在隐藏,但是由于解密的需要,使得整个映射对应的矩阵的秩非常小,因而它不能对抗秩攻击。后者而言,由于中心映射的随机性,目前并没有相关的攻击方法对其进行破解,但是同样由于中心映射的随机性,它并不能绝对的解密成功,即使它强调通过对参数的设置,可以使得解密成功的概率变得很高,但是对一个密码系统而言,这仍然是不适用的。就MPKC方案而言,一个比较常见的技术是“大域技术”,即把公钥映射到一个大域K上,然后使用向量同构(需要同构)。这种方法是一个双刃剑,因为K的结构使得解密变得容易,但是这样的结构也很容易被攻击者利用。
技术实现要素:
本发明的主要目的在于克服现有技术的缺点与不足,提供一种基于超球面的多变量公钥加密/解密系统。本发明的另一目的在于提供一种基于超球面的多变量公钥加密/解密方法。本发明的目的通过以下的技术方案实现:一种基于超球面的多变量公钥加密/解密系统,包含:A、加密模块,用于对待加密的明文进行加密处理,形成密文、完成加密,其包括处理器、公钥变换部件,待加密的明文传输到处理器后,处理器存储明文,然后将明文数据传输至公钥变换部件中,通过将明文数据分别代入多变量多项式,得到加密后的密文,密文随后被传输到处理器中存储,处理器再将密文传输给其他用户的解密模块;B、解密模块,用于对其他用户发来的密文数据进行解密处理,形成明文、完成解密,其包括处理器、仿射变换求逆部件一、陷门部件和仿射变换求逆部件二,其中陷门部件包含线性方程组构建部件和线性方程组求解部件,收到密文数据后,处理器先将密文传输给仿射变换求逆部件一进行仿射变换求逆运算,然后传输到陷门部件的线性方程组构建部件和线性方程组求解部件,分别进行线性方程组构建运算、线性方程组求解运算,将多项式求逆运算所得的一组解传输到仿射变换求逆部件二进行仿射变换求逆运算,最终传输到处理器,对传输过来的一组或多组数据,处理器分别计算每组数据的杂凑值,若所得的某组数据杂凑值与预先存储在处理器中的明文杂凑冗余数据相等,则将该组数据作为解密后的明文存储并输出;若都不满足,处理器向用户输出解密错误的警告信息;其中,所述加密模块、解密模块中所述的处理器为同一处理器。所述的基于超球面的多变量公钥加密/解密系统还包含选择器,其与处理器相连,当选择器处于开状态时,系统的加密模块工作,当选择器处于闭状态时,系统的解密模块工作。所述的处理器包含与选择器相连的调度器,选择器的开状态、闭状态由处理器中的调度器识别、处理,存储在处理器中的数据由调度器控制、调度到各个相应的部件进行相应的操作。所述的处理器还包含Hash探测器、存储器,处理器中计算数据的杂凑值由Hash探测器完成,处理器中存储数据由存储器完成。本发明的另一目的通过以下的技术方案实现:一种基于超球面的多变量公钥加密/解密方法,包含以下顺序的步骤:(1)加密过程:a、待加密的明文传输到处理器后,处理器计算其杂凑值,得到明文杂凑冗余数据,并存储明文和明文杂凑冗余数据;b、将明文数据传输至公钥变换部件中,通过将明文数据代入多变量多项式,得到加密后的密文;c、密文随后传输到处理器中存储,处理器将密文与明文杂凑冗余数据一起传输给其他用户的解密模块;(2)解密过程:a、收到其他用户发来的密文和明文杂凑冗余数据后,处理器先将明文杂凑冗余数据存储,再将密文传输给仿射变换求逆部件一进行仿射变换求逆运算;b、然后将求逆后的数据传输到陷门部件的线性方程组构建部件和线性方程组求解部件,分别进行线性方程组的构建和线性方程组的求解操作,线性方程组求解操作得一组或多组解;c、上述得到的解将传输到仿射变换求逆部件二进行仿射变换求逆运算;d、最终传输到处理器,对传输过来的一组或多组的数据,处理器分别计算每组数据的杂凑值,若某组数据的杂凑值与处理器存储的明文杂凑冗余数据相等,则将该组数据作为解密后的明文存储并输出;若都不满足,处理器向用户输出解密错误的警告信息。所述的步骤(1)加密过程包含:a、待加密的明文(x1',...,xn')∈Fn传输到处理器后,处理器计算其杂凑值(h1',...,hj')=Hash(x1',...,xn'),得到明文杂凑冗余数据(h1',...,hj'),其中Hash(·)是密码学上安全的单向函数,存储明文和明文杂凑冗余数据;b、将明文(x1',...,xn')数据传输至公钥变换部件中,公钥变换部件将明文数据代入公钥映射P(x1,...,xn),即分别计算各个多变量多项式p1(x1',...,xn'),...,pm(x1',...,xn')的值,其值分别记为y1',...,ym',(y1',...,ym')就是加密后的密文;c、密文(y1',...,ym')随后传输到处理器中存储,处理器将密文(y1',...,ym')和明文杂凑冗余数据(h1',...,hj')一起传输给其他用户的解密模块;步骤(2)解密过程包含:a、收到其他用户发来的密文(y1',...,ym')和明文杂凑冗余数据(h1',...,hj')后,处理器先将明文杂凑冗余数据(h1',...,hj')存储,再将密文(y1',...,ym')传输给仿射变换求逆部件一进行仿射变换求逆运算b、接着将传输给陷门部件,分别进行线性方程组构建、线性方程组求解操作,即线性方程组构建部件利用调度器预先分配在陷门部件里的m组数据(ci1,ci2,...,cin)以及联立构建方程组,具体如下:记为式子一,将式子一扩展成式子二:根据式子二,进行系列的前一式子减去后一式子处理,即得到式子三:将式子三转换成矩阵形式,得式子四:式子四即为线性方程组构建部件构建的关于的线性方程组;然后线性方程组求解部件利用高斯消元法对式子四进行求解,此解为一组或多组,设为d组,将该解集记为c、再将所得数据传输到仿射变换求逆部件二进行仿射变换求逆运算d、最终将(xi1',...,xin')传输到处理器,处理器计算(xi1',...,xin')的杂凑值,若某组i的数据(xi1',...,xin')的杂凑值与明文杂凑冗余数据(h1',...,hj')相等,则将该组数据(xi1',...,xin')作为解密后的明文输出;若对于所有的i都有(xi1',...,xin')≠(h1',...,hj'),则处理器向用户输出解密错误的警告信息。所述的基于超球面的多变量公钥加密/解密方法,在步骤(1)加密过程之前还包含以下步骤:当选择器处于开状态时,系统的加密模块工作,其中选择器与处理器相连;在步骤(2)解密过程之前还包含以下步骤:当选择器处于闭状态时,系统的解密模块工作,其中选择器与处理器相连。所述的处理器包含与选择器相连的调度器,选择器的开状态、闭状态由处理器中的调度器识别、处理,存储在处理器中的数据由调度器控制、调度到各个相应的部件进行相应的操作。所述的处理器还包含Hash探测器、存储器,处理器中计算数据的杂凑值由Hash探测器完成,处理器中存储数据由存储器完成。本发明与现有技术相比,具有如下优点和有益效果:1、没有使用“大域技术”,避免了使用同构部件进行向量同构,但是又能保证解密过程的方便。“大域技术”,即把公钥映射到一个大域K上,然后使用向量同构(需要同构)。这种方法是一个双刃剑,因为K的结构使得解密变得容易,但是这样的结构也很容易被攻击者利用。我们的方案完全摒除了这个技术,同时我们方案的解密过程又没有因为缺少同构技术而变得复杂。2、设计的中心映射由N组作为私钥的“球心”完全隐藏,使得攻击者即使知道我们设计的结构,也不能获得任何有利的帮助。对于中心映射的设计,我们设定m个随机的n维“球心”作为隐藏参数(私钥),使得其加密的几何意义为为m个“距离平方”,而就解密而言,其几何意义为知道球心及距离,如何找满足条件的超球面的点。3、运行速度非常快,尤其解密过程,仅需要进行一个线性方程组求解。目前很多加解密方案,如多变量当中的HFE,ABC方案,几乎所有传统的ECC和RSA加解密算法,解密过程都是需要进行求模运算或者标量乘法等复杂的数学运算的,因而解密速度会比较慢,而我们的方案,解密过程中只需要进行线性方程组求解,其求解需要使用的高斯消元运算明显比目前大多数方案运算复杂度低。4、在适当的参数选择下,可以抵御多变量公钥密码目前已知的代数攻击,安全性非常高。目前大多数MPKC方案的中心映射设计都不加入隐藏的参数作为私钥,而对应的中心映射生成的数学结构,一般都能推导得知其中心映射,从而使得很多MPKC方案不仅仅基于MQ问题,还存在结构问题,如MI,Square,三角方案等,最后不能抵抗对应的代数结构攻击。如HFE方案的中心映射虽然存在隐藏,但是由于解密的需要,使得整个映射对应的矩阵的秩非常小,因而它不能对抗秩攻击。而我们的方案,中心映射同样存在隐藏的参数作为私钥,且其中心映射是满秩的,故能抵抗秩攻击。附图说明图1为本发明所述的一种基于超球面的多变量公钥加密/解密系统的结构示意图。具体实施方式如图1,一种基于超球面的多变量公钥加密/解密系统,包含:A、选择器,其与处理器中的调度器相连,当选择器处于开状态时,系统的加密模块工作,当选择器处于闭状态时,系统的解密模块工作;B、加密模块,用于对待加密的明文进行加密处理,形成密文、完成加密,其包括处理器、公钥变换部件,待加密的明文被传输到处理器,其中处理器包含调度器、Hash探测器、存储器,Hash探测器计算明文的杂凑值,得到明文杂凑冗余数据,并将明文及其明文杂凑冗余数据存储在存储器里,然后将该明文数据传输至公钥变换部件中,公钥变换部件将明文数据代入公钥映射,即分别计算公钥映射的各个多变量多项式的值,得到加密后的密文,密文随后传输到处理器的存储器中存储,处理器将密文和明文杂凑冗余数据一起传输给其他用户的解密模块;C、解密模块,用于对其他用户发来的密文数据进行解密处理,形成明文、完成解密,其包括处理器、仿射变换求逆部件一、陷门部件和仿射变换求逆部件二,其中陷门部件包含线性方程组构建部件和线性方程组求解部件,收到密文数据后,处理器先将密文传输给仿射变换求逆部件一进行仿射变换求逆运算,然后传输到陷门部件的线性方程组构建部件和线性方程组求解部件,分别进行线性方程组构建运算、线性方程组求解运算,将多项式求逆运算所得的一组解传输到仿射变换求逆部件二进行仿射变换求逆运算,最终传输到处理器,对传输过来的一组或多组数据,处理器分别计算每组数据的杂凑值,若所得的某组数据杂凑值与预先存储在处理器中的明文杂凑冗余数据相等,则将该组数据作为解密后的明文存储并输出;若都不满足,处理器向用户输出解密错误的警告信息。其中,所述加密模块、解密模块中所述的处理器为同一处理器。基于超球面的多变量公钥加密/解密系统首次使用前,需要进行初始化,如下所示:(1)系统所有部件的算术运算都是建立在一个阶为q的有限域F上,其中q是一个奇素数;(2)令多变量公钥密码系统的方程个数为m,变量个数为n;(3)在仿射变换求逆部件一里,令是从Fm到Fm的随机选择的可逆仿射变换,类似地,在仿射变换求逆部件二里,令是从Fn到Fn的随机选择的可逆仿射变换;(4)在陷门部件里,系统随机选取m组球心数据(ci,1,ci,2,...,ci,n)满足ci,j∈Fq,1≤i≤m,1≤j≤n;(5)在公钥变换部件里,初始化中心映射F=(f1,...,fm),即由m个fi构成中心映射。令fi=(x1-ci,1)2+(x2-ci,2)2+...+(xn-ci,n)2,1≤i≤m,其中(ci,1,ci,2,...,ci,n)是在陷门部件里系统随机选取的m组球心数据。最后令P=TοFοS(x1,...xn)即为对应的公钥映射。(6)以上相关映射的数据在系统初始化之后是存储在存储器里,在系统工作过程中,它们是由调度器控制和调度到各个相应的部件里进行相关操作的。初始化完成后,系统就可以正式使用。一种基于超球面的多变量公钥加密/解密方法,包含以下顺序的步骤:(1)加密过程:a、当选择器处于开状态时,系统的加密模块工作,选择器与处理器的调度器相连,其中,处理器包含调度器、Hash探测器和存储器,待加密的明文(x1',...,xn')∈Fn传输到处理器后,Hash探测器计算其杂凑值(h1',...,hj')=Hash(x1',...,xn'),得到明文杂凑冗余数据(h1',...,hj'),其中Hash(·)是密码学上安全的单向函数,然后将明文及其杂凑冗余数据存储在存储器里;b、将该明文(x1',...,xn')传输至公钥变换部件中,公钥变换部件将数据代入公钥映射P(x1,...,xn)里,即分别计算各个多变量多项式p1(x1',...,xn'),...,pm(x1',...,xn')的值,其值分别记为y1',...,yn',数据(y1',...,yn')就是加密后的密文;c、密文(y1',...,yn')随后传输到处理器中存储,处理器再将密文(y1',...,yn')与明文杂凑冗余数据(h1',...,hj')一起传输给其他用户的解密模块;(2)解密过程:a、当选择器处于闭状态时,系统的解密模块工作,收到其他用户发来的密文(y1',...,ym')和明文杂凑冗余数据(h1',...,hj')后,处理器先将明文杂凑冗余数据(h1',...,hj')存储,再将密文(y1',...,ym')传输给仿射变换求逆部件一进行仿射变换求逆运算b、然后将传输给陷门部件,分别进行线性方程组构建、线性方程组求解操作,即线性方程组构建部件利用预先分配在陷门部件里的m组数据(ci,1,ci,2,...,ci,n)以及联立构建方程组(Ⅰ)。形式如下:把(Ⅰ)扩展成:对(Ⅱ)式,第一式减第二式,…,第m-1式减第m式,得:写成矩阵形式,得:(Ⅳ)式即为线性方程组构建部件构建的关于的线性方程组;然后线性方程组求解部件利用高斯消元法对(Ⅳ)进行求解,此解为一组或多组,设为d组,将该解集记为c、再将所得数据传输到仿射变换求逆部件二进行仿射变换求逆运算d、最终将(xi1',...,xin')传输到处理器,处理器计算(xi1',...,xin')的杂凑值,若某组i的数据(xi1',...,xin')的杂凑值与明文杂凑冗余数据(h1',...,hj')相等,则将该组数据(xi1',...,xin')作为解密后的明文输出;若对于所有的i都有(xi1',...,xin')≠(h1',...,hj'),则处理器向用户输出解密错误的警告信息。下面以一个具体的例子来详细介绍系统的初始化过程:(1)所有部件的运算都是基于阶为q=3的有限域F上,其中,基域F包含3个元素,这些元素分别为{0,1,2},域上定义的加法、乘法为整数的加法、乘法之后mod3;(2)系统里的方程个数为m=3,变量个数为n=2;(3)在仿射变换求逆部件一里,初始化在仿射变换求逆部件二里,初始化(4)在陷门部件里,随机取三组“球心”,(1,2),(2,1),(0,1);(5)在公钥变换部件里,首先中心映射F分别是:容易通过式子P=TοFοS(x1,...,xn)得到公钥变换P的具体式,其分别包括以下3个式子:p1(x1,x2)=x2p3(x1,x2)=x1在系统初始化之后,下面将详细地描述对于明文(1,2)的加密和它的解密。另外,为了简单地说明整个加密和解密的过程,不失一般性可设明文(1,2)的杂凑值为(1,1,1)。加密过程:(1)选择器处于开状态;(2)对于待加密的明文M=(1,2),处理器调用Hash探测器计算它的杂凑值(1,1,1)=Hash(M),即得到明文杂凑冗余数据(1,1,1),并将明文数据(1,2)和它的明文杂凑冗余数据(1,1,1)存储于存储器里,然后,处理器将明文(1,2)传输给公钥变换部件;(3)公钥变换部件接收到数据后,与处理器进行交互,调用函数P,并分别计算p1(1,2),p2(1,2),p3(1,2),得到结果(2,2,1),并将它返回存储器中;(4)处理器将数据(2,2,1)作为明文(1,2)的密文,然后将密文(2,2,1)和它的明文杂凑冗余数据(1,1,1)一起输出给用户(或设备);解密过程:(1)选择器处于闭状态;(2)对于待解密的数据(2,2,1)和它的明文杂凑冗余数据(1,1,1),输入端把它们传输给处理器并存于存储器中,然后处理器将密文数据(2,2,1)传输给仿射变换求逆部件一;(3)仿射变换求逆部件一收到数据(2,2,1)后,先与处理器进行交互,调用程序并计算T-1(2,2,1)=(1,1,1),然后将结果(1,1,1)传给陷门部件;(4)陷门部件收到数据(1,1,1)后,先与处理器进行交互,然后调用线性方程组构建子部件,该子部件利用调度器预先分配在陷门部件里的3组球心数据(1,2),(2,1),(0,1)以及(1,1,1)联立构建方程组,即把上面的三个式子展开,可得到:上述第一式减第二式,第二式减第三式,得:即为该子部件构建的线性方程组,之后陷门部件调用线性方程组求解子部件,求解出方程组关于未知变量的解,即最后陷门部件将此解集(1,1)传输给仿射变换求逆部件二;(5)仿射变换求逆部件二收到数据集(1,1)后,与处理器进行交互,运行程序并计算S-1(1,1),得到结果(1,2),最后将此数据集返回给存储器;(6)处理器调用Hash探测器,计算数据(1,2)的杂凑值,发现数据(1,2)的杂凑值为(1,1,1),即Hash(1,2)=(1,1,1),它等于存储器里的明文杂凑冗余数据(1,1,1);(7)处理器将数据(1,2)作为解密后的明文输出给用户(或设备)。上述实施例为本发明较简单的实施方式,但本发明的实施方式并不受上述实施例的限制,本发明推荐的系统参数为:q=31,n=34和m=35,其安全级别可高于280,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。