一种抗任意阶侧信道攻击的掩码防护方法及系统的制作方法

文档序号:10690799阅读:247来源:国知局
一种抗任意阶侧信道攻击的掩码防护方法及系统的制作方法
【专利摘要】一种抗任意阶侧信道攻击的掩码防护方法及系统,通过重新构造生成查找表替换非线性部件,查找表{L,M,R}中,向量L每个元素为非线性部件输出与n?1个随机数的异或值,随机数存储在矩阵M,向量R存储第二次查询的地址;该表满足输入x1,x2,…,xn,输出独立随机的y1,y2,…,yn,同时不泄漏原始输入x和输出y的任何信息;表查询过程包括首先生成查找表{L,M,R},然后先通过x1,x2,…,xn?1进行表重构,每两次表重构之间进行一次表刷新,最后再通过xn查询表{L,M,R},从而得出y1,y2,…,yn。本方案可有效对抗任意阶侧信道攻击,有安全性高,实用性强及可扩展性强等特点。
【专利说明】
-种抗任意阶侧信道攻击的掩码防护方法及系统
技术领域
[0001] 本发明设及密码安全技术领域,尤其设及一种针对不同软硬件载体的任意阶掩码 方案及系统,可有效对抗任意阶侧信道攻击。
【背景技术】
[0002] 密码忍片或加密设备的载体形式已受到多种类型的分析与攻击,特别是针对硬件 电路的侧信道攻击(Side Channel Attack,SCA),目前已成为密码算法硬件形式的主要威 胁。所谓侧信道攻击是指利用电路工作过程中的各种侧信道泄露信息,如:能耗、时间、故 障、电磁福射等[1-6],通过建立运些泄露信息与密码算法关键信息(如密钥)间的联系,实 现对秘密信息的提取。
[0003] 掩码对抗方案是一种应用广泛的侧信道对抗方法,掩码对抗方案自提出W来[7], 从一阶对抗逐渐发展至高阶对抗阶段[8-13],安全性及通用性也不断提高。最早的一阶掩 码方案主要针对DES算法提出,之后出现的一阶掩码方案则大多WAES为防护目标,针对于 不同的软硬件平台,同时不断优化时间和空间耗费。但运些对抗方案都只能对抗一阶SCA攻 击,一阶掩码方案已不能满足安全性要求,高阶掩码方案便逐渐发展起来。在追求更高安全 性的同时,高阶掩码方案也不断朝着通用化的方向发展,主要在于设计通用化的S盒掩码方 案,保证可应用于任何S盒设计且可抵抗任意阶SCA攻击,但是高阶掩码会很大程度上增加 额外的开销,因此在资源受限的设备上,高阶掩码方案难W得到应用。
[0004] 本发明W掩码对抗方法运种具有通用性及可证明安全性的对抗方法为研究目标, 提出一种轻量级任意阶掩码对抗方法,旨在使用更低资源开销的情况下,保证任意阶掩码 防护方案安全性。
[000日] [l]P.Kocher.Timing attacks on implementations of Diffie-Hellmann,民SA, DSS,and o化er systems.CRYPT0'96,LNCS ΙΙΟΘ,ρρ.ΙΟΑ-ΙΠ,ΙΘΘΘ- ?ΟΟΟ?] [2]Eli Biham,Adi Shamir.Differential Fault Analysis of Secret Key Oyptosystems. CRYPTO' 97
[0007] [3]P.Kocher,J. Jaffe,and BJun.Differential Power Analysis[A] .CRYPTO 1999[C]'Berlin Heide化erg:Springer-Verlag,1999:388-397.
[000引 [4]Quisquater J.J,Samyde D.Electromagnetic analysis化MA):Measures and countermeasures for smart cards.Cannes,France:ACM 2001
[0009] [5]E.Brier,C.Clavier,and F.Olivier.Correlation Power Analysis with a Leakage Model[A].C肥S 2004[C],Berlin Heide化erg:Springer-Verlag,2004:16-29.
[0010] [6]B.Gierlichs,L.Batina,P.Tuyls,and B.Preneel.Mutual Information Analysis!!A] .CHES2008[C] 'Berlin Heide化erg:Springer-Verlag,2008:426-442.
[0011] [7]S.Chari,C.S.Jutla,J.民.民ao,and P.民ohatgi.Towards Sound Approaches to Counteract Power Analysis Attacks[A].CRYPTO 1999[C],Berlin Heide;Lberg: Springer-Verlag,1999:398-412.
[0012] [8]Akkar,Giraud,C.:An Implementation of DES and AES, Secure againstSomeAt1:acks.In:Ko,c,C,.K.,Pfeccache,D.,F*aa;r,C.(eds.)QlES 200:LLNCS, vol.2162,pp.309-318.Springer,Heide化erg(2001)
[0013] [9]Rivain,M.,Dottax,E.,Prouff,E.:Block ciphers implementations provably secure against second order side channel analysis.In:Nyberg,K.(ed.) F沈 2008 丄NCS,vol.5086,pp.127-143. Springer,Heide化erg(2008)
[0014] [10]Rivain,M.,Prouff,E.:Provably secure higher-order masking of AES. In: Mangard,S. ,Standae;rt,F.-X. (eds.)畑ES 2010. LNCS, vol .6225, PP.413- 427. Springer, Heide化 erg( 2010)
[0015] [ll]Carlet,C.,Goubin,L.,Prouff,E.,Quisquater,M.,Rivain,M.:Higher- order masking schemes for S-Boxes.In:Canteaut,A.(ed.)FSE 2012丄NCS,vol.7549, pp.366-384.Springer,Heide化erg(2012)
[0016] [12]Roy,A.,Vivek,S.:Analysis and improvement of the generic higher- order masking scheme of FSE 2012. In :Bertoni,G.,Coron,J.-S.(eds.)CHES 2013 丄NCS,vol.8086,pp.417-434. Springer,Heide化erg(2013)
[0017] [13]Coron,J.-S.:Hi曲er Order Masking of Look-Up Tables.In EUROCRYPT 2014,LNCS,vol 8441,2014,pp 441-458.Springer Heide化erg(2014)

【发明内容】

[001引本发明提出一种轻量级任意阶掩码防护方案,称为DSM方案(Divided S-box Scheme),W有效对抗任意阶侧信道攻击。
[0019] 本发明技术方案提供一种抗任意阶侧信道攻击的掩码防护方法,通过重新构造生 成查找表替换非线性部件,
[0020] 设加密算法的非线性部件S(x)定义为
[0021] S:{0,l}k 一 {〇,l}k'
[0022] 其中,输入宽度为k,输出宽度为k',原始输入为X,原始输出y,要求将X拆分为相互 独立的η个共享因子,记为XI,X2,...,Xn,且满足乂= XiΦ A-2$…史.Υ?;将y拆分成yi,y2,...,yn,且 满足7=:3?1@巧? …
[0023] 所述查找表包含两个2k维的列向量L和R及一个η' X 2k的随机数矩阵M,其中 好'=「知将查找表记为化,M,R};设M(u)[j]表示随机数矩阵Μ中行向量M(u)的第j个 元素,向量L的每个元素 L(u)为原始的非线性部件输出与n-1个随机数的异或值,ue[0,2k- 1],对应的n-1个随机数存储在随机数矩阵Μ的两行,分别为M(u)和Μ(即U]),向量R用于存储 第二次查询的地址,R[U]表示向量R的第U个元素;该表化,Μ,R}满足输入XI,Χ2,…,Χη,输出 独立随机的yi,y2,…,yn,同时不泄漏原始输入X和输出y的任何信息;
[0024] 表查询过程包括W下步骤,
[0025] 步骤1,首先生成查找表化,M,R},含有2k行n'+2列;设整数i,j作为循环变量,i的 初始值为〇,j的初始值为1;
[0026] 步骤2,生成一张空的查找表化',1',1?'},含有2'1于11'巧列;令1/部分中第1行元素 1/ 山二叩货巧],R'部分中第i行元素 R'[/]=民[/史々]Φ.号,M'部分中第i行向量M'(0= M〇'货巧); 令i = i + l;若i<2k,重复执行步骤2,否则用查找表化',1',3'}更新当前的表化,1,1?},进入 步骤3;
[0027]步骤3,通过表刷新过程刷新查找表化,M,R},包括用刷新时得到的新的查找表 化',M',R'}更新当前的表化,M,R};令j = j+l;若j<n-l,返回步骤2,否则进入步骤4;
[00測步骤4,查询表化,M,R}中的第Xn行,令yi = L[Xn],{y2,. . .,yn'+l}=M(Xn);再查询第 R[Xn]行,令{yn'+2, . . .,yn} =M(R[Xn]);
[0029] 步骤5,输出{yi,y2,''',yn}。
[0030] 而且,步骤4中,若M(R[Xn])中元素个数大于n-n'-l,取前n-n'-l个元素作为 {yn'+2,. . .,yn}。
[0031] 而且,步骤1中,生成查找表化,M,R}包括W下两个阶段,
[0032] 第一阶段,生成R和Μ部分,包括如下步骤,
[0033] 步骤al. 1,生成一个含有2k个元素的向量Α,使得A中第U个元素 A[u] =11;用一个整 数i作为循环变量,初始值为0;
[0034] 步骤曰1.2,生成一个随机整数r,满足0《r《2k-l且r声i;令R部分中第i行元素 R
[i] 满足R[ i] =A[r];用另一个整数j作为循环变量,初始值为0;
[0035] 步骤al.3,生成一个随机整数m,满足令Μ部分中第i行第j列元素 M(i)
[j] 满足M(i)[ j]=m;令j = j+1;若j<n',重复执行步骤al .3,否则进入步骤al .4;
[0036] 步骤al. 4,令i = i+1,若i<2k,返回步骤al. 2,否则进入步骤al. 5;
[0037] 步骤a 1.5,输出R和Μ部分;
[0038] 第二阶段,生成L部分,包括如下步骤,
[0039] 步骤a2.1,首先生成一张空的查找表化,M,R},含有2k行η'+2列,令Μ和R部分等于 第一阶段得到的Μ和R部分;用一个整数i作为循环变量,初始值为0;
[0040] 步骤a2.2,令L中第i行元素 L[i]=S(i),其中S(i)表示非线性部件的第i个元素; 用整数j,k作为循环变量,初始值均为0;
[0041] 步骤a2.3,将L[i]与Μ部分第i行第j列元素 M(i)[ j]异或,记为L[i]=L[i] ? M(i) [j ];将循环变量j增加 1,即令j = j+1;若Κη',重复执行步骤a2.3,否则进入步骤a2.4;
[0042] 步骤a2.4,将L[i]与Μ部分第R[i]行第k列元素 M(R[i])[k]异或,记为L[i]=L[i] ? M(R[i])[k];令k = k+l ;若4<11-]1'-1,重复执行步骤a2.4,否则进入步骤a2.5;
[0043] 步骤曰2.5,令i = i+1;若i <2k,返回步骤曰2.2,否则进入步骤曰2.6;
[0044] 步骤曰2.6,输出查找表化,M,R}。
[0045] 而且,步骤3中表刷新过程包括W下步骤,
[0046] 步骤bl,首先生成一张空的查找表化',M',R'},含有2k行n'+2列;根据表生成过程 中第一阶段的方式生成r和R'部分,L'与刷新之前的查找表L部分相同;用整数i,j,k作为 循环变量,初始值均为0;
[0047] 步骤b2,先将L'[i]与r部分第i行第j列元素异或,再将结果与Μ部分第i 行第j列元素 M(i)[ j]异或,得到L' [i]=L' [i] ? Μ'(i)[ j] ? M(i)[ j];令j = j+1;若j<n',重 复执行步骤b2,否则进入步骤b3;
[0048] 步骤b3,将L'[i]与r部分第R(i)行第k列元素 M'(R(i))[k]异或,再将结果与Μ部 分第R(i)行第k列元素 M(R(i))[k]异或,得到L' [i]=L' [i] ? Μ'(i)[ j] ? M(i)[ j];令k = k+ 1;若k<n-n ' -1,重复执行步骤b3,否则进入步骤b4;
[0049] 步骤b4,令i = i+1;若i<2k,返回步骤b2,否则进入步骤b5;
[(K)加]步骤b5,输出查找表化',M',R'}。
[0051 ]本发明还提供一种抗任意阶侧信道攻击的掩码防护系统,用于通过重新构造生成 查找表替换非线性部件,
[0052] 设加密算法的非线性部件S(x)定义为
[0053] S:{0,l}k 一 {〇,l}k'
[0054] 其中,输入宽度为k,输出宽度为k',原始输入为X,原始输出y,要求将X拆分为相互 独立的η个共享因子,记为X1,X2,...,xn,且满足y= ...忠而;将y拆分成yi,y2,...,yn,且 满足^=扔@巧?…?·)',,;
[0055] 所述查找表包含两个2k维的列向量L和R及一个η' X 2k的随机数矩阵M,其中 内'=「(/?-1)/2],将查找表记为化,M,R};设M(u)[j]表示随机数矩阵Μ中行向量M(u)的第j个 元素,向量L的每个元素 L(u)为原始的非线性部件输出与n-1个随机数的异或值,ue[0,2k- 1],对应的n-1个随机数存储在随机数矩阵Μ的两行,分别为M(u)和Μ(即U]),向量R用于存储 第二次查询的地址,R[U]表示向量R的第U个元素;该表化,Μ,R}满足输入XI,Χ2,…,Χη,输出 独立随机的yi,y2,…,yn,同时不泄漏原始输入X和输出y的任何信息;
[0化6] 包括W下模块,
[0057]第一模块,用于首先生成查找表化,M,R},含有2k行n'+2列;设整数i,j作为循环变 量,i的初始值为0,j的初始值为1;
[005引第二模块,用于生成一张空的查找表化',M',R'},含有2k行n'+2列;令L'部分中第 i行元素 L'的=L[谢.巧],R'部分中第i行元素於的=啡货对货々,M'部分中第i行向量r (i) =M(/0 Υ/);令i = i + l;若i<2k,重复执行工作,否则用查找表化',Μ',R'}更新当前的表化, 1,尺},命令第立模块工作;
[0059] 第Ξ模块,用于通过表刷新过程刷新查找表化,M,R},包括用刷新时得到的新的查 找表化',M',R'}更新当前的表化,M,R};令j = j+l;若j<n-l,命令第Ξ模块工作,否则命令 第四模块工作;
[0060] 第四模块,用于查询表化,M,R}中的第Xn行,令yi = L[Xn],{y2, . . .,yn'+l}=M(Xn); 再查询第R[Xn]行,令{yn'+2, . . .,yn} =M(R[Xn]);
[OOW]第五模块,用于输出{yi,y2,…,yn}。
[0062] 而且,第四模块中,若M(R[Xn])中元素个数大于n-n'-l,取前n-n'-l个元素作为 {yn'+2,. . .,yn}。
[0063] 而且,第一模块中,包括W下两个部分,
[0064] 第一部分,用于生成R和Μ部分,包括如下单元,
[0065] 单元al. 1,生成一个含有2k个元素的向量Α,使得A中第U个元素 A[u] =11;用一个整 数i作为循环变量,初始值为0;
[0066] 单元曰1.2,生成一个随机整数r,满足0《r《2k-l且r声i;令R部分中第i行元素 R
[i]满足R[ i] =A[r];用另一个整数j作为循环变量,初始值为0;
[0067] 单元al.3,生成一个随机整数m,满足令Μ部分中第i行第j列元素 M(i)
[j ]满足M( i) [ j ] =m;令j = j+1;若j<n',重复工作,否则命令单元al. 4工作;
[006引单元al .4,令i = i+l,若i<2k,命令单元al .2工作,否则命令单元al .5工作;
[0069] 单元a 1.5,输出R和Μ部分;
[0070] 第二部分,用于生成L部分,包括如下单元,
[0071] 单元a2.1,首先生成一张空的查找表化,M,R},含有2k行η'+2列,令Μ和R部分等于 第一阶段得到的Μ和R部分;用一个整数i作为循环变量,初始值为0;
[0072] 单元a2.2,令L中第i行元素 L[i]=S(i),其中S(i)表示非线性部件的第i个元素; 用整数j,k作为循环变量,初始值均为0;
[0073] 单元a2.3,将L[i]与Μ部分第i行第j列元素 M(i)[ j]异或,记为L[i]=L[i] ? M(i) [j ];将循环变量j增加1,即令j = j+1;若Κη ',重复进行工作,否则命令单元a2.4工作;
[0074] 单元a2.4,将L[ i ]与Μ部分第即i ]行第k列元素 M(R[ i ])比]异或,记为L[ i ] =L[ i ] ? M(R[i])[k];令k = k+l ;若4<11-]1'-1,重复进行工作,否则命令单元a2.5工作;
[00巧]单元曰2.5,令i = i+1;若i<2k,命令单元曰2.2工作,否则命令单元曰2.6工作;
[0076] 单元曰2.6,输出查找表化,M,R}。
[0077] 而且,第一模块中,包括W下单元,
[007引单元bl,首先生成一张空的查找表化',M',R'},含有2k行n'+2列;根据表生成过程 中第一阶段的方式生成r和R'部分,L'与刷新之前的查找表L部分相同;用整数i,j,k作为 循环变量,初始值均为0;
[0079] 单元b2,先将L'[i]与r部分第i行第j列元素异或,再将结果与Μ部分第i 行第j列元素 M(i)[j]异或,得到L'[/] = L'[/] 0 Θ M(/)[/];:令j = j+l;若j<n',重复 进行工作,否则命令单元b3工作;
[0080] 单元b3,将L'[i]与r部分第R(i)行第k列元素 M'(R(i))[k]异或,再将结果与Μ部 分第R(i)行第k列元素 M(R(i))山异或,得到L'[/1 = L'[/] Θ Μ'(/)[/] 0 Μ(/)[/];令k = k+l; 若k<n-n ' -1,重复进行工作,否则命令单元b4工作;
[0081 ] 单元b4,令i = i+1;若i<2k,命令单元b2工作,否则命令单元b5工作;
[0082] 单元b5,输出查找表化',M',R'}。
[0083] 本发明的特点与优势:
[0084] (1)本发明提出了任意阶掩码防护方案,方案资源开销相对较低;
[0085] (2)本发明可有效对抗任意阶侧信道攻击,安全性高;
[0086] (3)本发明实用性强,实现简单,可应用于不同的软硬件载体中,可扩展性强。
【附图说明】
[0087] 图1为本发明实施例的表查询过程示意图。
[0088] 图2为本发明实施例的表刷新过程示例图。
【具体实施方式】
[0089] W下结合附图和实施例说明本发明的技术方案
[0090] 本发明实施例重新构造生成查找表来替换原始加密算法中的非线性部件,从而实 现加密。
[0091] 所述的加密算法的非线性部件S(x)可定义为
[0092] S:{0,l}k 一 {〇,l}k'
[0093] 其中,输入宽度为k,输出宽度为k',其原始输入为X,原始输出y,对于安全的掩码 方法要求将X拆分为相互独立的η个共享因子,记为XI,X2,…,Xn,且满足x='斯馆'超形...忠知。 将y拆分成yi,y2,…,yn,且满足夫=_>,]史巧Θ…巧。
[0094] 所述的重构的查找表包含两个2k维的列向量L和R及一个η'X 2k的随机数矩阵M,其 中n'=「(n-l)Z2l,将该表记为化,1,3}。^11)。']表示随机数矩阵1中行向量^11)的第^'个元 素,向量L的每个元素 L(u)为原始非线性部件S(u)输出与n-1个随机数的异或值(ue[0,2k- 1]),对应的n-1个随机数存储在矩阵Μ的两行,分别为M(u)和Μ(即U]),向量R用于存储第二 次查询的地址,即U]表示向量R的第U个元素。该表化,Μ,R}可满足输入XI,Χ2,…,Χη,可输出 独立随机的yi,y2,…,yn,同时不泄漏原始输入X和输出y的任何信息。
[00M]对于一个输入需要通过两次查询才能得到η个独立随机的输出值,第一次查询得 到存储于L中的一个共享因子及存储于Μ中的η '个共享因子,还有位于R中的一个坐标,用于 下一次查询;第二次查询得到存储于Μ中的剩余η-η'个共享因子。
[0096] 图1描述了对查找表化,M,R}的查询操作。{L,M,R}表中共有2k行,由L,M和RS部分 组成。L和R部分为2咐1列,Μ部分中共有2咐η'列,其中《'=「(《-1)/2] D.L山和L[z]分别表 示L部分中第U和Z行的元素,类似的R[u]和R[z]分别表示R部分中第U和Z行的元素。M(u)和Μ (Ζ)分别表示Μ部分中的第U和Ζ行η'个元素组成的向量。在查找表中,对于任意的u,L[u]满 足如下关系:
[0097] 1.当U为奇数时,L["]=巧")乐M(")[0]受...受U0Μ0-)[0]Θ...巧U [009引 2.当U为偶数时,L["]=S(")巧 M(")[0]巧…巧 M(U0 M(z)[0] Θ...货
[0099] 其中,z =即u]。为方便描述,W上两个公式中从M(u)[0巧ljM(z)[n'-l](n为奇数) 或M(z)[n'-2](n为偶数)分别记做mi,. . .,mn-i。
[0100] -次查表过程W-个k比特变量u为输入,u e [0,2k-l ],n个k比特变量yi,...,yn为输出。 根据输入u,首先查询表{L,M,R}中的第u行,令yi = L山并等于嘶|γ2,..., yn'+l}=M(u)。再查询第z = R[u]行,令{yn'+2,...,yn}=M(u)。若M(即u])中元素个数大于n-n'- 1,取前n-n'-l个元素作为{yn'+2, . . .,yn}。由于在查找表中,L[";|=、S>)巧"!i 0 ... 0府。_i,:而 (y2, . . .,yn'+i} = {M(u) [0],. . .,M(u)[n'-l]},{yn'+2, . . .,yn} = {M(z)[0],. . .,M(z)[n'- l]}(n为奇数)或{yn'+2, . . .,yn} = {M(z)[0],. . .,M(z)[n'-2]}(n为偶数)。因此查找表最终 的输出yi,y2,…,yn满足S(")=>'i 巧...巧;"。
[0101] 具体实施时,可分为表生成过程,表刷新过程及表查询过程,分别设计实现流程。
[0102] 所述的表生成过程,主要用于构建可替换原始非线性部件的查找表{L,M,R},满足 通过2次查询后可得到η个独立随机的输出值。
[0103] 所述的表刷新过程,主要用于对已构建好的表进行刷新操作,W保证表中的元素 随机独立,从而确保掩码方案的安全性。
[0104] 所述的表查询过程,主要用于输入χι,Χ2,···,Χη,输出独立随机的yi,y2,-',yn,需要 先通过XI,X2,…,Xn-l进行表重构,每两次表重构之间进行一次表刷新,最后再通过Xn查询表 化,M,R},从而得出yi,y2,…,yn。
[0105] 本发明实施例所提出的DSM方案中具体的表生成过程,表刷新过程及表查询过程, 具体描述如下。
[0106] (1)表生成过程
[0107] 表生成过程包含两个阶段:生成R和Μ部分、生成完整查找表部分。
[0108] 第一阶段,生成R和Μ包括如下步骤:
[0109] 步骤1,生成一个含有2k个元素的向量Α,使得A中第u(0《u《2k-l)个元素 A山=11。 用一个整数i作为循环变量,初始值为0。
[0110] 步骤2,生成一个随机整数r,满足0《r《2k-l且r声i。令R部分中第i行元素即i]满 足R[i]=A[r]。用另一个整数j作为循环变量,初始值为0。
[0111] 步骤3,生成一个随机整数m,满足0《m《2k-l。令Μ部分中第i行第j列元素 M(i)[j] 满足M(i)[j]=m。将循环变量j增加1,即令j = j+l;若j<n',重复执行步骤3,否则进入步骤 4。
[0112] 步骤4,将循环变量i增加1,即令i = i+l,若i<2k,返回步骤2,重复执行步骤2,3,4, 否则进入步骤5。
[011引步骤5,输出R和Μ部分。
[0114] 第二阶段在第一部分生成R和Μ完成的基础上进行,包括如下步骤:
[0115] 步骤1,首先生成一张空的查找表化,M,R},含有2k行η'+2列,令Μ和R部分等于第一 阶段得到的Μ和R部分。用一个整数i作为循环变量,初始值为0。
[0116] 步骤2,令L中第i行元素 L[i] = S(i),其中S(i)表示原有加密算法中S盒(即非线性 部件)的第i个元素。用整数j,k作为循环变量,初始值均为0。
[0117] 步骤3,将L[i]与Μ部分第i行第j列元素 M(i)[j]异或,目化[i] = L[i]eM(i)[j]。将 循环变量j增加1,即令j = j+1。若j<n',重复执行步骤3,否则进入步骤4。
[0118] 步骤4,将L[i]与Μ部分第即i]行第k列元素 Μ(即i])[k]异或,即L[i]=L[i]eM(R
[i])[k]。将循环变量k增加1,即令k = k+l。若k<n-n'-l,重复执行步骤4,否则进入步骤5。
[0119] 步骤5,将循环变量i增加1,即令i = i+l。若i<2k,返回步骤2,重复执行步骤2,3,4, 5, 否则进入步骤6。
[0120] 步骤6,输出查找表化,M,R}。
[0121] 表生成过程完成了初始表的构建过程,对于任意U e [0,2k-l ],满足
[0122]

[0123] 当表化,M,R}构建完成后,可W通过2次查询得到η个满足公式(1)的独立共享因 子,为了安全输出运些因子,还需要结合表刷新过程,如后所述。
[0124] (2)表刷新过程
[0125] 在表查询中,需要先通过Χ1,Χ2,…,Xn-l进行表重构,再通过Χη进行表查询,其中共 需要进行η-1次表重构。为了保证两次表重构之间的查找表相互独立,每次重构后,都必须 进行表刷新操作,表刷新的过程如图2所示。
[01%]图2中左侧表化,M,R}为刷新之前的查找表,右侧表化',M',R'}为刷新后的查找 表。首先通过表生成过程中第一阶段得到新的{M',R'}。然后依次修改化,M,R}中的L部分每 一行,得到化',M',R'}中的L'部分。在图2中,L[u]和L[z]分别表示L部分中第U和Z行的元 素,即u]和R[z]分别表示R部分中第u和z行的元素,M(u)和M(z)分别表示Μ部分中的第u和z 行η'个元素组成的向量,其中,Z表示即U]。类似的,L'[u]、L'[z']、R'[u]、R'[z']、M'(uWP M'(z')分别表示表{L',M',R'}中相应的元素,z'表示右侧表化',M',R'}中的R'[u]。刷新后 的L'中元素L'[x]满足公式(2)。 王'快1 =
[0。7]少'间'@ (Ar(")W、@f 0 Θ (Λ化Η'?)、Θ( 0 巧 \0s超。'-1、 ,] 、0《怯口 Μ、 ,} \〇封空内- / V。幻额-η,-2
[0128] 表刷新过程的目的在于刷新化,M,R}中的所有元素,得到新表,记为化',M',R'}, 同时使得对于相同输入,查询{L,M,R}与化',1',1?'}的所有输出共享因子的异或值相同。难 点在于在不产生泄漏的情况下计算L'中的元素,基本思路是表生成过程中第一阶段得到新 的{M',R'},再根据原有化,M,R}的规则生成新的L'。表刷新过程包括如下步骤:
[0129] 步骤1,首先生成一张空的查找表化',1',3'},含有2叫于11'+2列。根据表生成过程 中第一阶段生成M'和R'部分,L'与刷新之前的查找表L部分相同。用整数i,j,k作为循环变 量,初始值均为0。
[0130] 步骤2,先将L'[i]与r部分第i行第j列元素异或,再将结果与Μ部分第i 行第j列元素M(i)[j]异或,得到L'[/]=I/凹Φ Μ'贷的Φ M(/)[/]。将循环变量j增加1,即 令j = j+1。若j<n',重复执行步骤2,否则进入步骤3。
[0131] 步骤3,将L'[i]与r部分第R(i)行第k列元素M'(R(i))[k]异或,再将结果与Μ部分 第R(i)行第k列元素M(R(i))比]异或,得到L'凹=1;的@ Μ'(/)[/] @ Μ(|)阴。将循环变量k 增加1,即令k = k+l。若k<n-n' -1,重复执行步骤3,否则进入步骤4。
[0132] 步骤4,将循环变量i增加1,即令i = i+l。若i<2k,返回步骤2,重复执行步骤2,3,4, 否则进入步骤5。
[0133] 步骤5,输出查找表化',M',R'}。
[0134] 执行表刷新过程后,可生成刷新后的表化',1',3'},且化,1,1?}与化',1',1?'}的元 素随机无关,同时刷新前后满足公式(2)。
[0135]
傑:
[0136] 即任意相同输入,查询化,M,R}与化',M',R'}都可产生η个随机共享因子,且异或 值均为原始S盒的输出值。
[0137] (3)表查询过程
[0138] 表查询的过程先需要通过Χ1,Χ2,…,Xn-l对查找表进行重构,再通过Xn查询最后的 化,M,R},从而得出yi,y2,…,yn,同时不泄漏原始输入X和输出y的任何信息。为了保证安全 性,每次表重构后,都需要执行一次表刷新操作,表查询过程可利用W上表生成过程和表刷 新过程实现,包括W下步骤:
[0139] 步骤1,首先通过表生成过程生成查找表化,M,R},含有2k行n'+2列。用整数i,j作 为循环变量,i的初始值为0,j的初始值为1。
[0140] 步骤2,生成一张空的查找表化',1',3'},含有2叫于11'+2列。令1/部分中第1行元素 υ网=L[满巧],R'部分中第i行元素反'閒=啡θ.对θ巧,Μ'部分中第i行向量Μ'货=Μ(婚巧 将循环变量i增加1,即令i = i+l。若i<2k,重复执行步骤2,否则用查找表化',M',R'}更新当 前的表化,M,R},进入步骤3。
[0141] 步骤3,通过表刷新过程刷新查找表化,M,R},包括用刷新时得到的新的查找表 化',M',R'}更新当前的表化,M,R}。将循环变量j增加1,即令j = j+l。若j<n-l,返回步骤2, 重复执行步骤2、3,否则进入步骤4。
[0142] 步骤 4,查询表化,M,R}中的第 xn 行,令 yi = L[Xn],{y2,. . .,yn'+i}=M(Xn)。再查询第 即Xn]行,令{yn'+2,. . .,yn}=M(R[Xn])。若M(R[Xn])中元素个数大于n-n'-l,取前n-n'-l个元 素作为{yn'+2, . . .,yn}。此步骤实现可参见图1,令U为Xn。
[0143] 步骤5,输出{yi,y2,,,,,yn}。
[0144] 当表查询过程步骤3执行完毕后,对于查找表{L,M,R}中任意一行(记为第U行),可 满足等式(4)。
[0145]
(4)
[0146] 当表查询过程步骤4中带入xn对表{L,M,R}进行查询后,即当公式(4)中U为xn时,有
[0147]
[014引因此,最后的输出{yi,y2,···,yn}满足
[0149] .I'l 货拆 Θ…货乂, = 5Υ'·Χ)
[0150] 因此表查询过程可W产生相互独立的η个共享因子yi,y2,…,yn,并且满足运些共 享因子的异或与原始加密算法的S盒输出相等,能够保证加密结果的正确性。
[0151] 具体实施时,本发明所提供方法可基于软件技术实现自动运行流程,也可采用模 块化方式实现相应系统。本发明实施例还提供一种抗任意阶侧信道攻击的掩码防护系统, 用于通过重新构造生成查找表替换非线性部件,
[0152] 设加密算法的非线性部件S(x)定义为
[0153] S:{0,l}k 一 {〇,l}k'
[0154] 其中,输入宽度为k,输出宽度为k',原始输入为X,原始输出y,要求将X拆分为相互 独立的η个共享因子,记为XI,X2,...,xn,且满足x= X! Φ超史…Φχ?;将y拆分成yi,y2,...,yn,且 满足y:=扣Φ-巧史…笛片
[01W]所述查找表包含两个2k维的列向量L和R及一个η' X 2k的随机数矩阵M,其中 妊「如-1)/2^将查找表记为化,M,R};设M(u)[j]表示随机数矩阵Μ中行向量M(u)的第j个 元素,向量L的每个元素 L(u)为原始的非线性部件输出与n-1个随机数的异或值,ue[0,2k- 1],对应的n-1个随机数存储在随机数矩阵Μ的两行,分别为M(u)和Μ(即U]),向量R用于存储 第二次查询的地址,R[U]表示向量R的第U个元素;该表化,Μ,R}满足输入XI,Χ2,…,Χη,输出 独立随机的yi,Υ2,…,yn,同时不泄漏原始输入X和输出y的任何信息;
[0156] 包括W下模块,
[0157] 第一模块,用于首先生成查找表化,M,R},含有2k行n'+2列;设整数i,j作为循环变 量,i的初始值为0,j的初始值为1;
[015引第二模块,用于生成一张空的查找表化',!',R'},含有2k行n'+2列;令L'部分中第 i行元素 L,树=L[/史巧],R'部分中第i行元素 R'[/]=及技思对笛巧,Μ'部分中第i行向量M'(〇= M(/?.切;令i = i+l;若i<2k,重复执行工作,否则用查找表化',M',R'}更新当前的表化,Μ, R},命令第Ξ模块工作;
[0159] 第Ξ模块,用于通过表刷新过程刷新查找表化,M,R},包括用刷新时得到的新的查 找表化',M',R'}更新当前的表化,M,R};令j = j+l;若j<n-l,命令第Ξ模块工作,否则命令 第四模块工作;
[0160] 第四模块,用于查询表化,M,R}中的第xn行,令yi = L[Xn],{y2, . . .,yn'+i}=M(Xn); 再查询第R[Xn]行,令{yn'+2, . . .,yn} =M(R[Xn]);
[0161] 第五模块,用于输出{yi,y2,…,yn}。
[0162] 进一步地,第四模块中,若M(R[Xn])中元素个数大于n-n'-l,取前n-n'-l个元素作 为{yn'+2,. . .,yn}。
[0163] 进一步地,第一模块中,包括W下两个部分,
[0164] 第一部分,用于生成R和Μ部分,包括如下单元,
[0165] 单元al. 1,生成一个含有2k个元素的向量Α,使得A中第U个元素 A[u] =11;用一个整 数i作为循环变量,初始值为0;
[0166] 单元曰1.2,生成一个随机整数r,满足0《r《2k-l且r声i;令R部分中第i行元素 R
[i]满足R[ i] =A[r];用另一个整数j作为循环变量,初始值为0;
[0167] 单元al.3,生成一个随机整数m,满足令Μ部分中第i行第j列元素 M(i) [j ]满足M( i) [ j ] =m;令j = j+1;若j<n',重复工作,否则命令单元al. 4工作;
[0168] 单元al .4,令i = i+l,若i<2k,命令单元al .2工作,否则命令单元al .5工作;
[0169] 单元al. 5,输出R和Μ部分;
[0170] 第二部分,用于生成L部分,包括如下单元,
[0171] 单元a2.1,首先生成一张空的查找表化,M,R},含有2k行η'+2列,令Μ和R部分等于 第一阶段得到的Μ和R部分;用一个整数i作为循环变量,初始值为0;
[0172] 单元a2.2,令L中第i行元素 L[i]=S(i),其中S(i)表示非线性部件的第i个元素; 用整数j,k作为循环变量,初始值均为0;
[0173] 单元a2.3,将L[i]与Μ部分第i行第j列元素 M(i)[ j]异或,记为L[i]=L[i] ? M(i) [j ];将循环变量j增加1,即令j = j+1;若Κη ',重复进行工作,否则命令单元a2.4工作;
[0174] 单元a2.4,将L[i]与Μ部分第R[i]行第k列元素 M(R[i])[k]异或,记为L[i]=L[i] ? M(R[i])[k];令k = k+l ;若4<11-]1'-1,重复进行工作,否则命令单元a2.5工作;
[01巧]单元曰2.5,令i = i+1;若i<2k,命令单元曰2.2工作,否则命令单元曰2.6工作;
[0176] 单元曰2.6,输出查找表化,M,R}。
[0177] 进一步地,第一模块中,包括W下单元,
[017引单元bl,首先生成一张空的查找表化',M',R'},含有2k行n'+2列;根据表生成过程 中第一阶段的方式生成r和R'部分,L'与刷新之前的查找表L部分相同;用整数i,j,k作为 循环变量,初始值均为0;
[0179]单元b2,先将L'[i]与r部分第i行第j列元素异或,再将结果与Μ部分第i 行第j列元素 M(i)[ j]异或,得到L' [i]=L' [i] ? Μ'(i)[ j] ? M(i)[ j];令j = j+1;若j<n',重 复进行工作,否则命令单元b3工作;
[0180]单元b3,将L'[i]与r部分第R(i)行第k列元素 M'(R(i))[k]异或,再将结果与Μ部 分第R(i)行第k列元素 M(R(i))[k]异或,得到L' [i]=L' [i] ? Μ'(i)[ j] ? M(i)[ j];令k = k+ 1;若4<11-]1 ' -1,重复进行工作,否则命令单元b4工作;
[0181 ] 单元b4,令i = i+l;若i<2k,命令单元b2工作,否则命令单元b5工作;
[0182] 单元b5,输出查找表化',M',R'}。
[0183] 各模块具体实现可参见相应步骤,本发明不予寶述。
[0184] W上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人 员,在不脱离本发明的精神和范围的情况下,还可W作出各种变换或变型,因此所有等同的 技术方案也应该属于本发明的范畴之内,应由各权利要求限定。
【主权项】
1. 一种抗任意阶侧信道攻击的掩码防护方法,其特征在于:通过重新构造生成查找表 替换非线性部件, 设加密算法的非线性部件s(x)定义为 S:{0,l}k^{0,l}k, 其中,输入宽度为k,输出宽度为k',原始输入为X,原始输出y,要求将X拆分为相互独立 的η个共享因子,记为χι,Χ2,···,xn,且满足χ=λ·ι?Χ2? ... 将y拆分成yi,y2,···,yn,且满足 y= νιθ V2? ... Φ ν?; 所述查找表包含两个2k维的列向量L和R及一个η' X2k的随机数矩阵Μ,其中 衫'=「(《-1)/21,将查找表记为{1^,1?};设姒11)[」]表示随机数矩阵1中行向量1(11)的第」个 元素,向量L的每个元素 L(u)为原始的非线性部件输出与η-l个随机数的异或值,ue[〇,2k-1],对应的η-l个随机数存储在随机数矩阵Μ的两行,分别为M(u)和M(R[u]),向量R用于存储 第二次查询的地址,R[u]表示向量R的第u个元素;该表{L,M,R}满足输入 X1,X2,…,χη,输出 独立随机的yi,y2,…,yn,同时不泄漏原始输入X和输出y的任何信息; 表查询过程包括以下步骤, 步骤1,首先生成查找表{L,M,R},含有2kRn ' +2列;设整数i,j作为循环变量,i的初始值 为〇,j的初始值为1; 步骤2,生成一张空的查找表{1/,',1?'},含有21{行11'+2列;令1/部分中第市元素1/[1] = L[/?a)],R'部分中第i行元素 R'W= 部分中第i行向量Μ'(〇= Μ(?十灿令i =i+1;若i<2k,重复执行步骤2,否则用查找表{L',Μ',R'}更新当前的表{L,Μ,R},进入步骤 3; 步骤3,通过表刷新过程刷新查找表{L,M,R},包括用刷新时得到的新的查找表{L',M', R'}更新当前的表{L,M,R};令j = j+1;若j〈n-l,返回步骤2,否则进入步骤4; 步骤4,查询表{L,M,R}中的第χη行,令yi = L[xn],{y2,. . .,yn,+i} =Μ(χη);再查询第R[xn] 行,令{yn,+2, · · ·,yn}=M(R[xn]); 步骤5,输出{yi,y2,…,yn}。2. 根据权利要求1所述抗任意阶侧信道攻击的掩码防护方法,其特征在于:步骤4中,若 M(R[Xn])中元素个数大于n-n'-l,取前n-n'-l个元素作为{yn,+2,. . .,yn}。3. 根据权利要求1或2所述抗任意阶侧信道攻击的掩码防护方法,其特征在于:步骤1 中,生成查找表{L,M,R}包括以下两个阶段, 第一阶段,生成R和Μ部分,包括如下步骤, 步骤al. 1,生成一个含有2k个元素的向量Α,使得Α中第u个元素 A[u] =u;用一个整数i作 为循环变量,初始值为0; 步骤al. 2,生成一个随机整数r,满足0<r<2k-l且r辛i ;令R部分中第i行元素 R[i ]满足 R[ i ] =A[r];用另一个整数j作为循环变量,初始值为0; 步骤al.3,生成一个随机整数m,满足0<m<2k-l;令Μ部分中第i行第j列元素 M(i)[j]满 足M(i)[ j]=m;令j = j+Ι;若j〈n',重复执行步骤al .3,否则进入步骤al .4; 步骤al .4,令i = i+l,若i〈2k,返回步骤al .2,否则进入步骤al .5; 步骤a 1.5,输出R和Μ部分; 第二阶段,生成L部分,包括如下步骤, 步骤a2.1,首先生成一张空的查找表{L,Μ,R},含有2kRn ' +2列,令Μ和R部分等于第一阶 段得到的Μ和R部分;用一个整数i作为循环变量,初始值为0; 步骤a2.2,令L中第i行元素1^[1]=5(1),其中5(1)表示非线性部件的第1个元素;用整 数j,k作为循环变量,初始值均为0; 步骤a2.3,将L[i]与Μ部分第i行第j列元素 M(i)[j]异或,记为邱]=L|7] ? M(/)[/];将 循环变量j增加1,即令j = j+1;若j〈n',重复执行步骤a2.3,否则进入步骤a2.4; 步骤a2.4,将L[i]与Μ部分第R[i]行第k列元素 M(R[i])[k]异或,记为L[/] = L[/_] Φ M(R[/])j>];令k = k+l;若k〈n-n'-l,重复执行步骤a2.4,否则进入步骤a2.5; 步骤a2.5,令i = i+l;若i〈2k,返回步骤a2.2,否则进入步骤a2.6; 步骤a2.6,输出查找表{L,Μ,R}。4. 根据权利要求3所述抗任意阶侧信道攻击的掩码防护方法,其特征在于:步骤3中表 刷新过程包括以下步骤, 步骤bl,首先生成一张空的查找表{1/,',1?'},含有21{行11'+2列;根据表生成过程中第 一阶段的方式生成M'和R'部分,L'与刷新之前的查找表L部分相同;用整数i,j,k作为循环 变量,初始值均为〇; 步骤b2,先将L'[i]与M'部分第i行第j列元素 M'(i)[j]异或,再将结果与Μ部分第i行第 j列元素 M(i)[j]异或,得到I;K1 = L'[(| 街 Μ'(/)[/] Φ 令j = j+l;若Kn',重复执行 步骤b2,否则进入步骤b3; 步骤b3,将L'[i]与Μ'部分第R(i)行第k列元素 M'(R(i))[k]异或,再将结果与Μ部分第R ⑴行第k列元素 M(R(i))[k]异或,得到Ι/[?| = Ι/[(1 ? Μ'(雜]? Μ(·];令k = k+l;若k〈 n-n ' -1,重复执行步骤b3,否则进入步骤b4; 步骤b4,令i = i+1;若i〈2k,返回步骤b2,否则进入步骤b5; 步骤b5,输出查找表{L',M',R'}。5. -种抗任意阶侧信道攻击的掩码防护系统,其特征在于:用于通过重新构造生成查 找表替换非线性部件, 设加密算法的非线性部件S(x)定义为 S:{0,l}k^{0,l}k, 其中,输入宽度为k,输出宽度为k',原始输入为X,原始输出y,要求将X拆分为相互独立 的η个共享因子,记为χι,χ2,…,xn,且满足田…十将y拆分成yi,y2,…,yn,且满足 ν= νιθν?Φ ... θ V/?; 所述查找表包含两个2k维的列向量L和R及一个η' X2k的随机数矩阵Μ,其中 /7'=「(》-1)/21,将查找表记为{1』,1?};设1(11)〇]表示随机数矩阵1中行向量1(11)的第」个 元素,向量L的每个元素 L(u)为原始的非线性部件输出与η-l个随机数的异或值,ue[〇,2k-1],对应的η-l个随机数存储在随机数矩阵Μ的两行,分别为M(u)和M(R[u]),向量R用于存储 第二次查询的地址,R[u]表示向量R的第u个元素;该表{L,M,R}满足输入 X1,X2,…,χη,输出 独立随机的yi,y2,…,yn,同时不泄漏原始输入X和输出y的任何信息; 包括以下模块, 第一模块,用于首先生成查找表{L,M,R},含有2kRn'+2列;设整数i,j作为循环变量,i 的初始值为〇,j的初始值为1; 第二模块,用于生成一张空的查找表{1/,',1?'},含有21{行11'+2列;令1/部分中第1行元 素!;[/]= L(7?x/|,R '部分中第i行元素 R5[i]=即?.切?X/,Μ '部分中第i行向量M'③= 令i = i+i;若i〈2k,重复执行工作,否则用查找表{L',M',R'}更新当前的表{L,M, R},命令第三模块工作; 第三模块,用于通过表刷新过程刷新查找表{L,M,R},包括用刷新时得到的新的查找表 {L ',Μ ',R '}更新当前的表{L,Μ,R};令j = j+1;若j〈η-1,命令第三模块工作,否则命令第四 模块工作; 第四模块,用于查询表{L,M,R}中的第χη行,令yi = L[xn],{y2, . . .,yn,+i} =Μ(χη);再查 询第R[xn]行,令{yn,+2,…,yn} =M(R[xn]); 第五模块,用于输出{yi,y2,…,yn}。6. 根据权利要求5所述抗任意阶侧信道攻击的掩码防护系统,其特征在于:第四模块 中,若M(R[xn])中元素个数大于n-n'-l,取前n-n'-l个元素作为{y n,+2,. . .,yn}。7. 根据权利要求5或6所述抗任意阶侧信道攻击的掩码防护系统,其特征在于:第一模 块中,包括以下两个部分, 第一部分,用于生成R和Μ部分,包括如下单元, 单元al. 1,生成一个含有2k个元素的向量Α,使得Α中第u个元素 A[u] =u;用一个整数i作 为循环变量,初始值为0; 单元al. 2,生成一个随机整数r,满足0<r<2k-l且r辛i ;令R部分中第i行元素 R[i ]满足 R[ i ] =A[r];用另一个整数j作为循环变量,初始值为0; 单元al.3,生成一个随机整数m,满足0<m<2k-l;令Μ部分中第i行第j列元素 M(i)[j]满 足M( i) [ j ] =m;令j = j+Ι;若j〈n',重复工作,否则命令单元al · 4工作; 单元al .4,令i = i+l,若i〈2k,命令单元al.2工作,否则命令单元al.5工作; 单元al.5,输出R和Μ部分; 第二部分,用于生成L部分,包括如下单元, 单元a2.1,首先生成一张空的查找表{L,M,R},含有2kRn'+2列,令Μ和R部分等于第一阶 段得到的Μ和R部分;用一个整数i作为循环变量,初始值为0; 单元a2.2,令L中第i行元素1^[1]=5(1),其中5(1)表示非线性部件的第1个元素;用整 数j,k作为循环变量,初始值均为0; 单元a2.3,将L[i]与Μ部分第i行第j列元素 M(i)[j]异或,记为L[/_] = L[/] Θ M(/)[/];将 循环变量j增加1,即令j = j+1;若j〈n',重复进行工作,否则命令单元a2.4工作; 单元a2.4,将L[i]与Μ部分第R[i]行第k列元素 M(R[i])[k]异或,记为L[/_] = [_.[/] Φ M(R[/_])[々];令k = k+l;若k〈n-n'-l,重复进行工作,否则命令单元a2.5工作; 单元a2.5,令i = i+l;若i〈2k,命令单元a2.2工作,否则命令单元a2.6工作; 单元a2.6,输出查找表{L,M,R}。8. 根据权利要求7所述抗任意阶侧信道攻击的掩码防护系统,其特征在于:第一模块 中,包括以下单元, 单元bl,首先生成一张空的查找表{1/,',1?'},含有21{行11'+2列;根据表生成过程中第 一阶段的方式生成M'和R'部分,L'与刷新之前的查找表L部分相同;用整数i,j,k作为循环 变量,初始值均为〇; 单元b2,先将L'[i]与M'部分第i行第j列元素 M'(i)[j]异或,再将结果与Μ部分第i行第 j列元素 M(i)[j]异或,得到乙制=!;切梅^(/)[/]?:叫/)[/];令]_ = ]_+1;若]_〈11',重复进行 工作,否则命令单元b3工作; 单元b3,将L'[i]与M'部分第R(i)行第k列元素 M'(R(i))[k]异或,再将结果与Μ部分第R ⑴行第k列元素 M(R(i))[k]异或,得到L.'[/] = L'[/_] 0 M'(/)[/] 0 Μ(/)[/];令k = k+l;若k〈 n-n ' -1,重复进行工作,否则命令单元b4工作; 单元b4,令i = i+l;若i〈2k,命令单元b2工作,否则命令单元b5工作; 单元b5,输出查找表{L',M',R'}。
【文档编号】H04L9/00GK106059746SQ201610588636
【公开日】2016年10月26日
【申请日】2016年7月22日 公开号201610588636.1, CN 106059746 A, CN 106059746A, CN 201610588636, CN-A-106059746, CN106059746 A, CN106059746A, CN201610588636, CN201610588636.1
【发明人】唐明, 邱镇龙, 郭志鹏
【申请人】武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1