大规模多项式扩展欧几里得算法的安全外包方法
技术领域
本发明属于云计算安全技术领域,涉及一种大规模多项式扩展欧几里得算法的安全外包方法。
背景技术
欧几里得算法是迄今历史最悠久的算法之一,给定两个正整数a和b,该算法可以有效地计算出它们的最大公因子gcd(a,b)。经过简单的调整之后,也可以用于求解有限域上的两个多项式a(x),b(x)的最大公因式 gcd(a(x),b(x))。例如,在数学和密码学运算中,我们经常需要运用扩展欧几里得算法去求解u(x)和v(x),使得
a(x)u(x)+b(x)v(x)=gcd(a(x),b(x)),
其中,gcd(.)表示输入的最大公因子。特别地,如果输入的两个多项式 a(x),b(x)是互素的,即gcd(a(x),b(x))=1,则此时求得的u(x)与v(x),满足
a(x)u(x)≡1mod b(x),b(x)v(x)≡1mod a(x),
这种模逆操作在现代计算机科学运算中几乎是无处不在的。考虑到实际应用中,尤其是密码体制的设计与实现中,涉及的有限域上多项式,要么多项式的系数非常大(q是一个非常大的素数),比如联邦信息处理标准中(FIPS) 数字签名算法(DSA)建议的有限域的素数q比特长度为1024比特,2048比特或3072比特;要么多项式的次数很高,比如联邦信息处理标准中(FIPS)椭圆数字曲线签名算法(ECDSA)建议使用有限域[x]中的多项式次数为571的多项式。随着移动互联网和物联网的发展,智能设备发挥出越来越重要的作用,然而由于目前智能设备计算能力较弱,因而很难承担上述所说的大规模
多项式的运算工作。因此,借助云服务器设计一种安全有效的安全外包算法,实现外包大规模多项式的扩展欧几里得算法很有现实意义。
云计算技术可以为具有较弱计算能力的用户提供强大的计算能力,而且服务方式是按需提供,本地端不需要繁琐的资源配置,这为解决上述问题提供了一种思路。资源有限的设备可以利用云服务器以按需使用的方式利用云服务器强大的计算能力去解决一些计算开销高的运算,而避免了自己购买昂贵的硬件软件设备。然而,这种计算模型仍然存在一些安全问题。一方面,用户发送给云服务器计算的数据可能是敏感数据,比如个人医疗数据,公司金融文件,个人身份信息等,一旦这些重要数据被泄露,可能会对用户造成严重的财产损失;另一方面,由于云服务提供商是利益驱动的,为了降低自己的计算成本,云服务器可能并不会完成指派的运算而是只返回给用户一个不完整的计算结果,或者一个随机值,甚至一个恶意错误的结果以误导用户;除此之外,一些意外因素比如软件漏洞,硬件故障,或者是外部攻击也可能导致用户收到错误的计算结果。因此,我们在使用云计算技术的同时,应该仔细考虑如何解决上述问题。
为了解决上面的问题,一个完备的安全外包方案应该满足以下三个性质: (1)机密性;(2)可验证性;(3)高效性。机密性是指算法必须保护计算数据的输入和输出的隐私,即云服务器不能获取计算任务的真实输入和真实输出;可验证性是指用户能够以不可忽略的概率检测出云服务器的恶意行为,验证云服务器返回结果的正确性,并且能够从云服务器返回的正确结果中恢复出所需的结果;高效性是指用户使用外包算法所需要的计算开销应该低于用户完全由自己执行计算任务所需要的计算开销。因此我们要设计的算法应该要保护输入多项式和输出多项式的隐私性,而且用户能以较高概率验证云服务器返回结果的正确性,最重要的该算法效率必须要高,必须要高于用户自己计算的效率。
现有的方案大多是针对模幂等密码基础运算、矩阵运算、线性规划等问题的理论研究结果。Zihao Shan等人对当前已有的技术进行了非常全面的综述。目前还没有针对大规模多项式扩展欧几里得算法的外包协议研究结果,本发明专利首次提出了针对该问题的一个完整外包方法。该外包方法基于单服务器,用户只需要在本地进行加密运算,然后将密文发送给云服务器,云服务器计算出结果。在整个过程中,云服务器不能从密文中推测出真实输入和输出,因而能很好的保护输入和输出的隐私性;而且用户可以以1的概率验证返回结果是否正确,然后从云服务器返回的正确结果中恢复出需要的结果;除此之外,用户在整个过程中只需要进行简单的加密运算,验证运算和解密运算,这些运算需要的计算开销相对于独自运算是很低的,因而具有很高的效率。
发明内容
为克服上述技术问题,本发明提供一种大规模多项式扩展欧几里得算法的安全外包方法,解决有限域上大规模多项式的扩展欧几里得算法的外包协议设计问题,这里的大规模是指多项式的系数很大,可能长达512比特,1024 比特,或者更高;或者多项式的次数很高,次数可能为512,1024,或者更高。这样的大规模导致扩展欧几里得算法非常耗时,资源受限的客户端可能难以承受,因此本发明考虑设计有效的外包协议方法,将这个运算外包给云服务器,本地客户端只进行简单的加密,验证,解密运算,实现外包方法的机密性,验证性,高效性。
为解决上述技术问题,本申请提供一种大规模多项式扩展欧几里得算法的安全外包方法,其包括:
第一步,密钥生成;
第二步,加密;
第三步,计算;
第四步,验证和解密。
其中,所述第一步中所需要的密钥,即随机多项式r(x)和幺模矩阵U,根据输入条件的不同,r(x)和U的取值也不同,
当n很大,q很小时:
当q很大,n>0时:
其中,“n很大”,在应用场景中指的是外包的多项式的次数n很大,n 至少大于κ1;“q很大”,在应用场景中指的是外包的多项式的系数很大,系数的二进制表示至少大于κ2比特,表示有限域中比特长度不超过κ2的元素构成的集合,κ1和κ2为安全参数,用户可以根据自己的安全需求确定安全等级,为了防止暴力破解,取值至少为80。
其中,所述第二步进一步具体为包括:
第2.1步,用r(x)盲化,
a′(x)=r(x)a(x),b′(x)=r(x)b(x)
第2.2步,用幺模矩阵进行二次加密,
用户把加密后的a"(x)和b"(x)发送给云服务器计算。
其中,所述第三步进一步具体为云服务器接收到盲化并二次加密的值 a"(x),b"(x)后,运用扩展欧几里得算法求得u"(x),v"(x)和d"(x),使得
a"(x)u"(x)+b"(x)v"(x)=d"(x)=gcd(a"(x),b"(x))
云服务器将计算结果返回给用户,计算结果包括u"(x),v"(x)和d"(x)。
其中,所述第四步进一步具体为用户首先检查下列等式是否成立:
a″(x)u″(x)+b″(x)v″(x)=d″(x)
d"(x)|a"(x),d"(x)|b″(x)
如果上述等式不成立,那么云端返回给用户的结果是不正确的,如果成立,用户解密方式如下:
u(x)=u11(x)u"(x)+u21(x)v"(x)
v(x)=u12(x)u"(x)+u22(x)v″(x)
d(x)=d"(x)/r(x)
u(x),v(x)和d(x)即为所求结果。
有益的技术效果
本发明与现有技术相比,具有以下有益效果:
1、该方法采用一种新型的加密变换技术,即幺模矩阵变换技术,这种技术使得输入与加密输入具有相同的最大公因子,而且加密过程和解密过程都很简洁,运算简单;
2、安全的鲁棒性。本发明提出的外包方法基于单个不可信服务器,适用于现实环境,而且用户可以以1的概率检测云服务器返回结果的正确性;除此之外,经过严格的安全性分析和香农的信息论,我们的加密技术可以视为某种意义下的一次一密,因而具有很高的安全等级;
3、极高的效率。本发明提出的外包方法中用户和云服务器只需要进行一轮的通信,这极大降低了通信开销,而且我们的算法在用户放也具有很高的效率,整个过程中用户只需要进行15次多项式乘法操作,实验表明,客户端自己计算所需要的时间大约是外包计算所需时间的2-8倍。
附图说明
图1为本发明安全外包方法的通用流程图;
图2为本发明安全外包方法的执行过程的流程图。
具体实施方式
本发明所应用的相关理论如下:
(1)云计算
云计算(Cloud Computing)是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。云计算包括三种服务模式:软件即服务(Saas),平台即服务(Paas)和基础设施即服务(Iaas)。通过这项技术,普通用户可以借助网络服务提供者提供的服务,可以在数秒之内,处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的计算能力。整个过程用户只需对计算付费,而不用为使用的计算设施付费,而且是按需付费,这样用户就不需要投入大量的费用来购买软件和设备去完成很少发生的大批量运算或者资源需求。
(2)安全外包计算
用户可以将自己不能完成的任务交付给云服务器完成,但如果用户的数据涉及隐私,比如个人的身份信息和商业机密,如果直接交付给云服务器,由于复杂的网络环境,就会有泄露危险。因此我们必须考虑如何对数据进行加密,同时对云服务器返回的结果能够进行验证,防止云服务器因为“懒惰”而返回无效甚至恶意结果,也就是要保证计算过程是安全的,同时要保证在整个过程中用户所做的计算任务要低于完全自己运算所需要的计算任务。
(3)有限域
有限域或伽罗瓦域(Galois Field),是一个包含q个元素的有限集合其上定义了加法(.)和乘法(+)两种运算,满足如下性质
①集合在加法运算下构成阿贝尔群,记其加法单位元为
②集合的非零元素在乘法运算下构成阿贝尔群,记其乘法单位元为
③乘法关于加法满足分配律,即对于任意的满足
a·(b+c)=a·b+a·c和(b+c)·a=b·a+c·a。
(4)有限域上的多项式
给定有限域是上的多项式是指多项式系数记a(x)最高次项的系数为l(a(x))=an.若则a(x)的次数deg(a(x))=n。给定两个多项式 是它们的最大公因式(记作d(x)=gcd(a(x),b(x)))是指
(i)d(x)整除a(x),d(x)整除b(x);
(ii)对任意的d′(x)整除a(x),d′(x)整除b(x),有d′(x)整除d(x);
(iii)
(5)扩展欧几里得算法
欧几里得算法(Euclidean algorithm),又称辗转相除法,是求最大公因子的算法。给定两个正整数a,b,借助欧几里得算法可以方便的求解出a和b的最大公因子d,该算法经过平凡推广也可以用于求解两个多项式的公因式。
扩展欧几里得算法(The Extended Euclidean Algorithm)是欧几里得算法的扩展。已知整数a,b,扩展欧几里得算法可以在求解a,b的最大公因子的同时,同时找到整数u和v,使它们满足au+bv=d。同样,该算法经过平凡推广后也可用于有限域上的多项式。
(6)幺模矩阵
给定有限域2阶矩阵或者是幺模矩阵(Unimodular matrix)当且仅当
值得注意地是,如果矩阵U是幺模矩阵,那么U存在逆矩阵T,且也是幺模矩阵。
作为一个好的安全外包协议方法,应满足安全外包方案的三个性质即机密性,验证性,高效性。输入两个大规模多项式本专利要解决如何在云服务器帮助下快速准确求出u(x),v(x)以及d(x)使得 d(x)=gcd(a(x),b(x))=a(x)u(x)+b(x)v(x),其中gcd(a(x),b(x))表示 a(x),b(x)最大公因式。
为了保证机密性,本专利提供的安全外包方法首先用随机多项式r(x)来加密输入以达到隐藏输出结果中最大公因子,即
a′(x)=r(x)a(x)b′(x)=r(x)b(x)
同时为了进一步隐藏输入,本协议提出了一种有效的矩阵变换技术,该变换不会改变变换前多项式的最大公因子,但却较好地隐藏了变换前多项式的系数以及度数信息,满足这种良好性质的矩阵为幺模矩阵(即矩阵行列式的绝对值为1的矩阵,而且幺模矩阵的逆矩阵也是幺模矩阵)
将a′(x),b′(x)通过幺模矩阵变换再次加密
由幺模矩阵变换的性质可知,gcd(a"(x),b"(x))=gcd(a′(x),b′(x))= d′(x).
用户把最后的加密输入a"(x),b"(x)发送给云服务器,云服务器对这两个多项式运用扩展的欧几里得算法计算u"(x),v"(x)和d"(x),
并返回结果,由于返回的结果与真实结果之间具有线性关系,用户不仅可以方便的验证返回结果的正确性,而且能高效地恢复出真实结果。即
u(x)=u11(x)u"(x)+u21(x)v"(x)
v(x)=u12(x)u"(x)+u22(x)v"(x)·
d(x)=d"(x)/r(x)
基于上述理论,本发明所提供的大规模多项式扩展欧几里得算法的安全外包方法中涉及云端和用户端,其中,云端为用户提供计算资源,用户把计算任务发送给云端,同时用户将计算所需的数值盲化后发送给云端,用户验证云返回的结果并解密出真正的计算结果。
用户拥有两个大规模多项式其中为有限域, n=max{deg(a(x)),deg(b(x)))},deg(.)表示多项式的次数,目的是计算上的三个多项式u(x),v(x)和d(x),使得
a(x)u(x)+b(x)v(x)=d(x)=gcd(a(x)b(x))
所述外包方法包括:
第一步,密钥生成;
第二步,加密;
第三步,计算;
第四步,验证和解密。
所述第一步中所需要的密钥,即随机多项式r(x)和幺模矩阵U,根据输入条件的不同,r(x)和U的取值也不同,
当n很大,q很小时:
当q很大,n>0时:
其中,“n很大”,在应用场景中指的是外包的多项式的次数n很大;“q很大”,在应用场景中指的是外包的多项式的系数很大。表示有限域中比特长度不超过κ2的元素构成的集合,κ1和κ2为安全参数,用户可以根据自己的安全需求确定安全等级,为了防止暴力破解,取值至少为80。
该步骤可以由用户完成,也可以由可信第三方完成,但都是在预计算时完成的,也就是说在实际应用时本步骤已经完成,用户只需随机选取使用而不是实际计算。r(x)和U也是解密的密钥,它们都由用户保存,不可泄漏。
所述第二步进一步包括:
第2.1步,用r(x)盲化,
a′(x)=r(x)a(x),b′(x)=r(x)b(x)
第2.2步,用幺模矩阵进行二次加密,
用户把加密后的a"(x)和b"(x)发送给云服务器计算。
所述第三步进一步具体为云服务器接收到盲化并二次加密的值a"(x), b"(x)后,运用扩展欧几里得算法求得u"(x),v"(x)和d"(x),使得
a"(x)u"(x)+b"(x)v"(x)=d"(x)=gcd(a"(x),b"(x))
云服务器将计算结果返回给用户。计算结果包括u"(x),v"(x)和d"(x)。
所述第四步进一步具体为用户首先检查下列等式是否成立:
a″(x)u″(x)+b″(x)v″(x)=d″(x)
d"(x)|a"(x),d″(x)|b″(x)
如果上述等式不成立,那么云端返回给用户的结果是不正确的。如果成立,用户解密方式如下:
u(x)=u11(x)u"(x)+u21(x)v″(x)
v(x)=u12(x)u″(x)+u22(x)v″(x)
d(x)=d″(x)/r(x)
此时,u(x),v(x)和d(x)即为所求结果。
以下采用实施例和附图来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。
图1所示为安全外包方法的体系图。其中x表示计算任务的输入,σx表示x的密文,σy表示云端对输入σx的计算结果,y为用户解密出的真正的计算结果(计算任务的输出)。本发明实现方法包含两大组成部分:用户和云服务器。用户计算能力较弱,云服务器则具有极高的计算能力但是并不可信。用户要进行超过自身计算能力的计算任务,因而要借助云服务器。用户在进行安全外包任务时,首先对数据进行盲化加密,然后将处理完毕的数据发送给云服务器进行计算,接着云服务器计算完成之后,将计算结果返回给用户,然后用户对云服务器返回的结果进行验证,验证不通过,则报告云服务器的不诚实行为,输出错误,验证通过后,最后通过自己保存的密钥解密恢复出自己想要的结果。
图2为本发明提出安全外包方法的执行过程的流程图,该方法中两个实体:云与客户端需要交互一次完成大规模多项式扩展欧几里得算法的外包实现。用户首先预计算生成加密密钥,然后对输入多项式进行加密,并将加密后的多项式发送给云服务器。云服务器对密文多项式执行扩展的欧几里得算法,并将计算结果返回给客户端。最后,客户端验证云返回结果的正确性,并解密出真正的计算结果。
本专利提出的可应用于大规模多项式的扩展欧几里得算法的安全外包协议主要包括以下四个步骤:
第一步:用户生成密钥。
此阶段是独立于与输入多项式,属于预处理阶段。用户通过预计算生成加密阶段所需要的密钥,即随机多项式和2阶的幺模矩阵U。根据不同的应用场景,r(x)和U的取值稍有不同.
当n很大,q很小时:
当q很大,n>0时:
其中,“n很大”,在应用场景中指的是外包的多项式的次数n很大;“q很大”,在应用场景中指的是外包的多项式的系数很大。表示有限域中元素的比特长度不超过κ2,κ1和κ2为安全参数,用户可以根据自己的安全需求确定安全等级,为了防止暴力破解,取值至少为80。
第二步,用户加密
输入两个大规模多项式a(x),b(x),用户首先用r(x)盲化,然后用幺模矩阵进行二次加密。
(2.1)用户计算
a′(x)=r(x)a(x)b′(x)=r(x)b(x)
(2.2)用户计算
a″(x)=u11(x)a(x)+u12(x)b′(x)
b″(x)=u21(x)a(x)+u22(x)b′(x)
最后,用户把加密后的a"(x)和b"(x)发送给云服务器。
第三步,云计算
云服务器接收到盲化值a"(x),b″(x)后,运用扩展欧几里得算法求得 u"(x),v"(x)和d"(x),使得
a"(x)u"(x)+b"(x)v"(x)=d"(x)=gcd(a"(x),b"(x)).
并将计算结果返回给用户。计算结果包括u"(x),v"(x)和d"(x)。
第四步,用户验证与解密
收到云服务器返回的计算结果后,用户首先检查下列等式是否成立:
a"(x)u"(x)+b″(x)v"(x)=d"(x)
d"(x)|a"(x),d"(x)|b"(x)
如果上述等式不成立,那么云端返回给用户的结果是不正确的。如果成立,用户解密方式如下:
u(x)=u11(x)u"(x)+u21(x)v"(x)
v(x)=u12(x)u″(x)+u22(x)v″(x)
d(x)=d"(x)/r(x)
此时,u(x),v(x)和d(x)即为所求结果。
所有上述的首要实施这一知识产权,并没有设定限制其他形式的实施这种新产品和/或新方法。本领域技术人员将利用这一重要信息,上述内容修改,以实现类似的执行情况。但是,所有修改或改造基于本发明新产品属于保留的权利。
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。