CN113255923B - Sm4算法的量子实现电路 - Google Patents

Sm4算法的量子实现电路 Download PDF

Info

Publication number
CN113255923B
CN113255923B CN202110606979.7A CN202110606979A CN113255923B CN 113255923 B CN113255923 B CN 113255923B CN 202110606979 A CN202110606979 A CN 202110606979A CN 113255923 B CN113255923 B CN 113255923B
Authority
CN
China
Prior art keywords
module
circuit
quantum
algorithm
box
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110606979.7A
Other languages
English (en)
Other versions
CN113255923A (zh
Inventor
向泽军
林达
张莎莎
曾祥勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hubei University
Original Assignee
Hubei University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hubei University filed Critical Hubei University
Priority to CN202110606979.7A priority Critical patent/CN113255923B/zh
Publication of CN113255923A publication Critical patent/CN113255923A/zh
Application granted granted Critical
Publication of CN113255923B publication Critical patent/CN113255923B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Radio Transmission System (AREA)

Abstract

本发明涉及一种SM4算法的量子实现电路,具体包括利用基于矩阵分解原理的启发式算法生成SM4算法线性子部件L以及L’的量子实现电路,同时,基于对SM4算法S盒经典实现的量子化设计,改进了SM4算法非线性部件T以及T’的量子实现电路,分别针对密钥扩展算法和轮展开设计了一种有效减少量子比特使用数量的优化实现电路。本发明的SM4算法量子实现电路中,线性部件无需引入额外的量子辅助比特并且实现代价较低,非线性部件无需引入额外的量子存储比特保存S盒的输出,同时本发明的SM4算法的量子实现电路所需的量子存储比特目前已知最少。因此,本发明有效的降低了在量子应用场景下实现SM4算法的电路大小以及实现成本。

Description

SM4算法的量子实现电路
技术领域
本发明涉及SM4算法的量子优化实现,具体涉及一种SM4算法的量子实现电路。
背景技术
量子计算机具有天然的并行计算能力,这种特性给经典密码算法的安全性带来一定威胁,因此,研究经典密码算法的量子安全特性一直是后量子时代的热点。SM4算法是我国公布的商用分组密码算法, 其流程如图1所示。自2012年被制定为行业标准公开以来,SM4算法已经得到了更为广泛的应用。
美国国家标准与技术研究院(NIST)将密码算法的量子安全等级定义为与对其进行密钥穷举攻击所需的量子资源有关,包括该攻击所需的量子逻辑门数量、量子比特数等,这使得研究密码算法的量子优化实现具有极其重要的意义。
量子电路要求可逆,并分别使用Toffoli门和CNOT门模拟经典电路中的与运算和异或运算。因此,对于密码算法的线性子部件,可仅使用CNOT门构造其量子实现,而对于其非线性子部件(即S盒),则可由Toffoli门、CNOT门等通用量子逻辑门构造其量子实现。目前研究对称密码算法量子实现时一般采用LUP分解的方法实现算法线性层,然而该方法所需异或操作较多。同时,直接将非线性子部件的经典实现转换为量子实现需使用较多量子比特。鉴于目前大型通用量子计算机远未普及,并且Toffoli门的实现代价远比CNOT门、Hadamard门等的实现代价大,使用更少量子比特并尽可能减少量子电路中Toffoli门的数量一直是研究对称密码算法量子优化实现的目标。
发明内容
本发明要解决的技术问题是针对以上不足,提供一种SM4算法的量子实现电路,利用基于矩阵分解原理的启发式算法生成线性变换的自更新实现,节约电路所需量子辅助比特以及CNOT门来降低密码算法中线性变换LL’的实现成本以及所需电路面积,并且改进SM4算法非线性部件中合成置换TT’的量子实现方案来减少量子比特的使用数量,从而达到优化整体密码算法量子实现电路的目的。
为解决以上技术问题,本发明采用以下技术方案:
SM4算法的量子实现电路,电路中的与门由Toffoli门模拟,异或门由CNOT门模拟,取反门由X门模拟;SM4算法S盒电路包括第一模块、第二模块、第三模块、第四模块、第五模块和第六模块,设S盒的总输入信号为(x 0 ,x 1 ,…,x 7 ),S盒的总输出信号为(s 0 ,s 1 ,…,s 7 ),所有辅助比特的初始值为0,所述第四模块、第五模块和第六模块用于计算S盒的输出信号,所述第四模块的输入信号为S盒的总输入信号,所述第四模块用于依次调用第一模块、第二模块对S盒的总输入信号进行处理,得到中间变量p 0 ,p 1 ,p 2 ,p 3 ,再利用第三模块对中间变量p 0 , p 1 ,p 2 ,p 3 进行处理,得到中间变量l 0 ,l 1 ,l 2 ,l 3 ,第四模块的输出信号为第五模块的输入信号,第五模块的输出信号为第六模块的输入信号,第六模块用于依次逆向使用第三模块、第二模块、第一模块所示电路以置零所有辅助比特,第六模块的输出即S盒的总输出(s 0 , s 1 ,…,s 7 )。
进一步,第一模块用于依次模拟x4=x4⊕x2⊕x7,x7=x7⊕1,p0=p0⊕(x7·x4)⊕1,x7=x7⊕1,x6=x6⊕x2⊕x7,x2=x2⊕x0⊕x3,p3=p3⊕(x6·x2)⊕1,x2=x2⊕x0⊕x3,x6=x6⊕x2⊕x7,x3=x3⊕x4⊕x5⊕x7⊕1,x4=x4⊕x6,p1=p1⊕(x3·x4)⊕1,x3=x3⊕x0⊕x2⊕x4⊕x7,x1=x1⊕x3⊕1,p2=p2⊕(x3·x1),x1=x1⊕x3⊕1,x3=x3⊕x0⊕x2⊕x5⊕x6⊕1,x4=x4⊕x2⊕x6⊕x7,x0=x0⊕x4⊕x6,x5=x5⊕x0⊕x1⊕x3⊕x6⊕x7,t0=t0⊕(x0·x5)⊕x0⊕x5⊕1,x5=x5⊕x0⊕x1⊕x2⊕x4⊕x6,p0=p0⊕(x5·x6)⊕x5⊕x6,x6=x6⊕x0⊕x2⊕x5⊕1,x7=x7⊕x0⊕1⊕x1⊕x4⊕x3⊕x6,p0=p0⊕(x6·x7),x7=x7⊕x0⊕x1⊕x3⊕x4⊕x6⊕1,x6=x6⊕x0⊕x2⊕x5⊕1。
第二模块用于依次模拟x5=x5⊕x2⊕x3⊕x4⊕x7,x2=x2⊕x6⊕1,x3=x3⊕x0⊕x6⊕x7,p2=p2⊕(x2·x3),x2=x2⊕x6⊕1,p0=p0⊕t0⊕p1⊕p3,x1=x1⊕x5⊕x6,x5=x5⊕x3⊕x4⊕1,p1=p1⊕(x5·x1)⊕x1⊕x5,x5=x5⊕x3⊕x4⊕1,x3=x3⊕x0⊕x6⊕x7,x2=x2⊕x0⊕x6⊕1,x1=x1⊕x6,p1=p1⊕(x2·x1),x1=x1⊕x5,x2=x2⊕x0⊕x6⊕1,p1=p1⊕p2⊕p3⊕x3⊕x5⊕x6⊕x7⊕1,p3=p3⊕t0⊕p2,x2=x2⊕x6⊕1,x7=x7⊕x0⊕x3⊕x6,p2=p2⊕(x2·x7),x2=x2⊕x6⊕1,x0=x0⊕x4⊕x6,x7=x7⊕x2⊕x0⊕x5,x2=x2⊕x0⊕x4⊕x7⊕1,x5=x5⊕x1⊕x6,p2=p2⊕p0⊕x1⊕t0⊕(x7·x6)⊕x7⊕x6⊕(x2·x5),x5=x5⊕x1⊕x6,x2=x2⊕x0⊕x4⊕x7⊕1,x6=x6⊕x0⊕x4,x1=x1⊕x0⊕x2⊕x7,t0=t0⊕(x6·x1)⊕x6⊕x1⊕1。
第三模块用于依次模拟t1=t1⊕(p0·p3)⊕1,t2=t2⊕(t1·p1)⊕t1⊕p1⊕1,t1=t1⊕t2⊕p1,t4=t4⊕p2⊕(p1·p3)⊕1,t5=t5⊕(p1·t4)⊕p1⊕t4,t3=t3⊕(p2·t4)⊕1,t6=t6⊕(p0·t4)⊕p0⊕t4⊕1,t5=t5⊕t6,l2=l2⊕(t5·t1)⊕1,l3=l3⊕t5⊕p0⊕1,t5=t5⊕t6⊕(p1·t4)⊕p1⊕t4,t4=t4⊕p2⊕(p1·p3),t4=t4⊕(t6·t2)⊕t6⊕t2,l1=l1⊕(t3·t4)⊕1,l0=l0⊕(t4·p2)⊕p3
第四模块用于依次调用第一模块、第二模块、第三模块,并依次模拟x1=x1⊕x0⊕x2⊕x7,x7=x7⊕x2⊕x3⊕x4⊕x5,x6=x6⊕x0⊕x4,x2=x2⊕x3⊕x4⊕x5⊕1,Z=Z⊕(x2·l0)⊕1,s2=s2⊕Z,s5=s5⊕Z,s7=s7⊕Z,Z=Z⊕(x2·l0)⊕1,x2=x2⊕x3⊕x4⊕x5⊕1,x4=x2⊕x4⊕x6⊕x7,Z=Z⊕(x4·l0),s0=s0⊕Z,s1=s1⊕Z,s3=s3⊕Z,s4=s4⊕Z⊕1,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x4·l0),x4=x2⊕x4⊕x6⊕x7,x0=x0⊕x1⊕x3⊕x4⊕x5⊕x7,Z=Z⊕(x0·l1)⊕1,s3=s3⊕Z,s7=s7⊕Z,Z=Z⊕(x0·l1),x0=x0⊕x1⊕x3⊕x4⊕x5⊕x7,x6=x6⊕x0⊕x4,Z=Z⊕(x6·l1),s1=s1⊕Z,s2=s2⊕Z,Z=Z⊕(x6·l1),x6=x6⊕x0⊕x4,x7=x7⊕1,Z=Z⊕(x7·l2),s1=s1⊕Z,s3=s3⊕Z,s5=s5⊕Z,s6=s6⊕Z,Z=Z⊕(x7·l2)。
第五模块用于依次模拟x7=x7⊕1,x2=x2⊕x4⊕x7,Z=Z⊕(x2·l2),s0=s0⊕Z,s1=s1⊕Z,s2=s2⊕Z,s5=s5⊕Z,s6=s6⊕Z,Z=Z⊕(x2·l2),x2=x2⊕x4⊕x7,x7=x7⊕x0⊕x3⊕x4,Z=Z⊕(x7·l3),s1=s1⊕Z,s2=s2⊕Z,s5=s5⊕Z,s6=s6⊕Z,Z=Z⊕(x7·l3),x7=x0⊕x3⊕x4⊕x7,x6=x6⊕x2⊕1,Z=Z⊕(x6·l3)⊕1,s1=s1⊕Z,s3=s3⊕Z,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x6·l3),x6=x6⊕x2⊕1,l3=l3⊕l2,x0=x0⊕x2⊕x3,s0=s0⊕(x0·l3)⊕1,x0=x0⊕x2⊕x3,x2=x2⊕x6⊕x7,Z=Z⊕(x2·l3),s5=s5⊕Z,s7=s7⊕Z,Z=Z⊕(x2·l3),x2=x2⊕x6⊕x7,l3=l3⊕l2,l2=l2⊕l0,Z=Z⊕(x6·l2),s1=s1⊕Z,s4=s4⊕Z,s6=s6⊕Z,Z=Z⊕(x6·l2,x5=x2⊕x3⊕x4⊕x5⊕x7,s1=s1⊕(x5·l2)⊕1,x5=x2⊕x3⊕x4⊕x5⊕x7,l2=l2⊕l0,l0=l0⊕l1,x0=x0⊕x2⊕x3⊕x5⊕x6⊕1,Z=Z⊕(x0·l0),s1=s1⊕Z,s5=s5⊕Z,s7=s7⊕Z,Z=Z⊕(x0·l0),x1=x0⊕x1⊕1,Z=Z⊕(x1·l0),s0=s0⊕Z,s1=s1⊕Z,s4=s4⊕Z,s6=s6⊕Z,Z=Z⊕(x1·l0),x1=x0⊕x1⊕1。
第六模块用于依次模拟x0=x0⊕x2⊕x3⊕x5⊕x6⊕1,l0=l0⊕l2⊕l3,x5=x5⊕x1⊕x6,Z=Z⊕(x5·l0),s1=s1⊕Z,s2=s2⊕Z,s3=s3⊕Z,s5=s5⊕Z,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x5·l0),x5=x5⊕x1⊕x6,x3=x3⊕x0⊕x5⊕x7⊕1,Z=Z⊕(x3·l0),s2=s2⊕Z,s3=s3⊕Z,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x3·l0),x3=x3⊕x0⊕x5⊕x7⊕1,l0=l0⊕l1⊕l2⊕l3,l1=l1⊕l3,x1=x1⊕x5,Z=Z⊕(x1·l1),s2=s2⊕Z,s3=s3⊕Z,s4=s4⊕Z,s5=s5⊕Z,s7=s7⊕Z,Z=Z⊕(x1·l1),x1=x1⊕x5,x0=x0⊕x2⊕x4⊕1,Z=Z⊕(x0·l1),s1=s1⊕Z,s2=s2⊕Z,s3=s3⊕Z,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x0·l1)⊕1,x0=x0⊕x2⊕x4⊕1,l1=l1⊕l3,x6=x6⊕x0⊕x4,x7=x7⊕x2⊕x3⊕x4⊕x5,x1=x1⊕x0⊕x2⊕x7.接着逆向使用第三模块、第二模块、第一模块中的线路,初始化所有量子辅助比特并输出S盒的总输出信号。
SM4算法密钥扩展算法的量子实现电路,合成置换T’的改进实现电路包括逆L’变换电路、4个S盒电路和L’变换电路,所述逆L’变换电路用于对32比特长的轮子密钥Ki作逆L’变换,并将得到的信号分为4个8比特的信号,每一个8比特的信号均输入对应S盒电路中,S盒电路的输出端均连接到线性变换L’电路线性变换L’电路用于对4个并行S盒电路的输出信号共32比特进行线性变换得到32比特长的输出信号。通过上述改进即可节约32个量子存储比特实现合成置换T’并且生成当前轮轮子密钥。
SM4算法的量子实现电路由其密钥扩展算法的量子实现电路以及轮展开的量子实现电路组成。本发明的有益效果为:
本发明的SM4算法量子实现电路中,线性部件无需引入额外的量子辅助比特,非线性部件无需引入额外的量子存储比特保存S盒的输出,同时本发明设计的SM4算法密钥扩展算法以及轮展开的量子实现电路所需的存储比特目前已知最少。因此,本发明涉及的一种SM4算法的量子优化实现方法有效的降低了SM4算法量子实现电路的大小以及实现成本。通过对合成置换电路T’进行改进,在合成置换电路T’内加入逆L’变换电路,结合4个S盒电路和L’变换电路,通过将32个比特的数据进行拆分,经S盒电路处理后再还原为32比特,可以节约32个量子存储比特实现合成置换T’并且生成当前轮轮子密钥。上述改进对于合成置换T同样适用。
下面结合附图和实施例对本发明进行详细说明。
附图说明
图1为SM4算法流程图;
图2为经典电路与量子电路中门电路对比图;
图3为线性变换L’的量子实现电路图;
图4为S盒的量子实现第一模块;
图5为S盒的量子实现第二模块;
图6为S盒的量子实现第三模块;
图7为S盒的量子实现第四模块;
图8为S盒的量子实现第五模块;
图9为S盒的量子实现第六模块;
图10为非线性子部件T’改进前的量子实现电路图;
图11为非线性子部件T’改进后的量子实现电路图;
图12为SM4算法密钥扩展算法的量子实现电路图;
图13为线性变换L的量子实现电路图;
图14为SM4算法轮展开的量子实现电路图;
图15为本发明的SM4算法量子优化实现电路图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示为SM4算法流程图,本发明涉及的量子实现电路包括密钥扩展算法以及轮展开两部分。
本发明的量子优化实现电路得到的方法为,分步设计SM4算法的密钥扩展算法中线性变换L’和S盒的量子实现方案,设计算法生成轮子密钥的量子电路;分步设计SM4算法的轮展开中线性变换L和S盒的量子实现方案,设计算法加密流程的量子电路;综合密钥扩展算法以及轮展开的量子实现电路设计SM4算法整体量子优化实现方案。具体步骤为:
S1、分步设计SM4算法的密钥扩展算法中线性变换L’和S盒的量子实现方案,设计算法生成轮子密钥的量子电路
S1.1、根据密钥扩展算法中线性变换L’对应的二元矩阵生成L’的量子实现
SM4算法的密钥扩展算法中,线性变换L’可以表示成如下二元矩阵:
10000000000001000000000100000000
01000000000000100000000010000000
00100000000000010000000001000000
00010000000000001000000000100000
00001000000000000100000000010000
00000100000000000010000000001000
00000010000000000001000000000100
00000001000000000000100000000010
00000000100000000000010000000001
10000000010000000000001000000000
01000000001000000000000100000000
00100000000100000000000010000000
00010000000010000000000001000000
00001000000001000000000000100000
00000100000000100000000000010000
00000010000000010000000000001000
00000001000000001000000000000100
00000000100000000100000000000010
00000000010000000010000000000001
10000000001000000001000000000000
01000000000100000000100000000000
00100000000010000000010000000000
00010000000001000000001000000000
00001000000000100000000100000000
00000100000000010000000010000000
00000010000000001000000001000000
00000001000000000100000000100000
00000000100000000010000000010000
00000000010000000001000000001000
00000000001000000000100000000100
00000000000100000000010000000010
00000000000010000000001000000001
设线性变换L’的输入为(x 0 ,x 1 ,,x 31 ),输出为(y 0 ,y 1 ,,y 31 )。利用基于矩阵分解原理的启发式算法生成的线性变换L’的自更新异或实现如表1所示。
表1:线性变换L’对应矩阵的自更新实现
Figure 209805DEST_PATH_IMAGE001
经过上述实现,线性变换L’的输出信号y 0 ,y 1 ,,y 31 的值依次等于最终的x 0 ,x 24 x 2 ,x 3 ,x 27 ,x 5 ,x 7 ,x 30 ,x 8 ,x 9 ,x 10 ,x 11 ,x 22 ,x 4 ,x 14 ,x 6 ,x 16 ,x 17 ,x 1 ,x 19 ,x 20 ,x 12 ,x 13 ,x 23 ,x 21 ,x 25 ,x 26 x 18 ,x 28 ,x 29 ,x 15 ,x 31 的值。通过CNOT门模拟异或运算可以直接将表1所示实现转换为量子实现,从而在无需借助其他辅助量子比特的情形下使用78个CNOT门实现密钥扩展算法中合成置换T’中的线性变换L’。 CNOT门即如图2中量子环境下实现异或运算所示器件,其输入为|a>|b>,经过CNOT门后,第一量子比特保持不变,将第一量子比特异或到第二量子比特,因此第二量子比特变为|ab>,由此,CNOT门的功能为:将量子态|a>|b>转换为|a>|ab>,|ab>即为量子比特|a>与|b>的异或。线性变换L’的量子实现电路如图3所示。
S1.2、基于经典实现设计S盒的量子优化实现电路
S1.2.1、利用塔域分解技术获得SM4算法S盒的经典实现
基于塔域分解技术得到的SM4算法S盒的经典实现在与门的使用数量上具有一定优势,因此,本发明采用如下表2所示基于塔域分解技术得到的经典实现生成SM4算法S盒的量子优化实现,其中(x 0 ,x 1 ,,x 7 )为S盒的输入,(s 0 ,s 1 ,,s 7 )为S盒的输出,剩余变量为辅助比特且初始值为零,用于存储中间值。
表2:基于塔域分解技术生成的SM4算法S盒的经典硬件实现
Figure 563163DEST_PATH_IMAGE002
表2所示S盒的经典硬件实现共消耗66个XOR/XNOR门,32个NAND门,9个NOR门,1个NOT门。将该实现直接转换成量子实现时,与运算由Toffoli门模拟,异或运算由CNOT门模拟,取反运算(即异或1)由X门模拟。由于比特a与比特b的或运算a|b=(a⊕1)·(b⊕1)⊕1=a·b⊕a⊕b,因此,或运算可由一个Toffoli门以及两个CNOT门模拟。Toffoli门、CNOT门、X门如图2中量子环境下实现与运算、异或运算、取反运算所示器件。记Toffoli门的输入为|a>|b>|c>,经过Toffoli门后第一、第二量子比特不变,借助第三个量子比特存储第一、第二量子比特做与运算之后的结果,即将|a>|b>|c>转换成|a>|b>|c⊕a&b>。当c为零时,Toffoli门实现将|a>|b>|0>转换成|a>|b>|a&b>,于是量子比特|a>和|b>做与运算的结果|a&b>保存在第三个量子比特中。X门的功能为将量子比特的状态翻转,即将|a>变为|a⊕1>。
S1.2.2、设计S盒的量子优化实现电路
表2所示经典硬件实现共消耗108个比特,其中100个比特为用于存储中间值的辅助比特,直接将其转换为量子实现代价过大。考虑到上述经典实现中,S盒的输出(s 0 ,s 1 ,, s 7 )与中间值(l 0 ,l 1 ,l 2 ,l 3 )有关,而(l 0 ,l 1 ,l 2 ,l 3 )的值又与(p 0 ,p 1 ,p 2 ,p 3 )有关,因此,本发明基于该经典实现,按照生成(p 0 ,p 1 ,p 2 ,p 3 )、(l 0 ,l 1 ,l 2 ,l 3 )、(s 0 ,s 1 ,,s 7 )的顺序,分三步设计SM4算法S盒的量子优化实现电路。
S1.2.2.1、利用S盒的输入设计生成经典实现中(p 0 ,p 1 ,p 2 ,p 3 )的量子实现
记S盒的输入为(x 0 ,x 1 ,,x 7 ),根据表2所示经典实现,表3给出了计算中间变量(p 0 ,p 1 ,p 2 ,p 3 )的优化实现方案。
表3:第一中间变量电路生成(p 0 ,p 1 ,p 2 ,p 3 )的实现方案
Figure 342901DEST_PATH_IMAGE003
分别使用Toffoli门,CNOT门以及X门模拟表3所示实现中的“·”操作,“⊕”操作以及“⊕1” 操作即可将该实现转换为量子实现方案。表3所示实现对应的量子电路使用5个量子比特,其中4个用于存储中间变量(p 0 ,p 1 ,p 2 ,p 3 ),1个作为辅助比特(即t 0 )在第60步操作时已被初始化为零,该比特在后面可以继续作为辅助比特使用从而节约量子比特。电路消耗14个Toffoli门, 142个CNOT门以及34个X门, Toffoli深度为4.
S1.2.2.2、利用(p 0 ,p 1 ,p 2 ,p 3 )设计生成(l 0 ,l 1 ,l 2 ,l 3 )的量子实现
将(p 0 ,p 1 ,p 2 ,p 3 )作为输入,表4给出了计算经典实现中中间变量(l 0 ,l 1 ,l 2 ,l 3 )的优化实现方案。
表4:第二中间变量电路生成(l 0 ,l 1 ,l 2 ,l 3 )的实现方案
Figure 20001DEST_PATH_IMAGE004
分别使用Toffoli门,CNOT门以及X门模拟表4所示实现中的“·”操作,“⊕”操作以及“⊕1”操作即可将该实现转换为量子实现方案。表4所示实现对应的量子电路使用10个量子比特,其中4个用于存储中间变量(l 0 ,l 1 ,l 2 ,l 3 ),1个辅助比特(即t 5 )在第11步已被初始化为零,该比特在后面可以继续作为辅助比特使用从而节约量子比特,剩下5个辅助比特待重置。电路消耗12个Toffoli门, 31个CNOT门以及12个X门, Toffoli深度为3。
S1.2.2.3、设计S盒的量子实现方案
基于上述实现方案,表5给出SM4算法S盒的实现方案,其中(x 0 ,x 1 ,…,x 7 )为S盒的输入,中间变量(p 0 ,p 1 ,p 2 ,p 3 )是表3的输出,中间变量(l 0 ,l 1 ,l 2 ,l 3 )是表4的输出,Z为辅助比特,(s 0 ,s 1 ,…,s 7 )为S盒的输出。
表5:SM4算法S盒的优化实现方案
Figure 273521DEST_PATH_IMAGE005
Figure 33666DEST_PATH_IMAGE006
表5所示实现方案需调用两次表3和表4中的操作。通过利用Toffoli门模拟表5所示与操作(即“·”),利用CNOT门模拟异或操作(即“⊕”),利用X门模拟取反操作(即“⊕1”),即可将表5所示实现转换为S盒的量子实现电路。需要说明的是,表5所示实现方案需额外借助1个辅助比特Z,通过将表4所示实现方案执行后被初始化的变量t 5 作为Z使用,即可使用14个辅助量子比特实现SM4算法的S盒,即实现|x>|y>|014> → |x>|ySbox(x) >|014>,其中x=(x 0 ,x 1 ,…,x 7 )为S盒的输入,8比特变量y为S盒的输出比特,对应表5所示(s 0 ,s 1 ,…, s 7 )。该量子实现方案共消耗554个CNOT门, 86个Toffoli门,89个X门, 电路Toffoli深度为46。本发明将表5对应量子实现电路分为第四模块、第五模块、第六模块,分别如图7、图8、图9所示。第四模块以(x0,x1,…,x7)作为输入,其中第一模块、第二模块、第三模块作为第四模块的一部分。第五模块的输入即第四模块的输出,第六模块的输入即第五模块的输出,第六模块的输出即S盒的输出。值得注意的是,第六模块将第一模块、第二模块、第三模块的逆向电路作为其部分电路,由于量子电路可逆,所以第六模块通过依次逆向使用第三模块、第二模块、第一模块的量子电路来初始化辅助量子比特是可行的。
S1.3、利用子部件的优化实现设计SM4的密钥扩展算法的量子优化实现
S1.3.1、基于对密钥编排方式的进一步观察改进合成置换T’的实现
合成置换T’由非线性变换τ和线性变换L’组成,其中τ由4个并行的S盒组成。设T’的输入为(a 0 ,a 1 ,…,a 31 ),经过变换τ后状态为:(Sbox(a 0 ,a 1 ,…,a 7 ), Sbox(a 8 ,a 9 ,…,a 15 ), Sbox(a 16 ,a 17 ,…,a 23 ), Sbox(a 24 ,a 25 ,…,a 31 ))。由轮密钥生成公式可知,第i轮轮子密钥rk i =Ki+4=KiT’ (a 0 ,a 1 ,…,a 31 ) = KiL’(τ(a 0 ,a 1 ,…,a 31 )) = L’(L’ -1(Ki)⊕τ(a 0 ,a 1 ,…, a 31 )) = L’(L’ -1(Ki)⊕(Sbox(a 0 ,a 1 ,…,a 7 ), Sbox(a 8 ,a 9 ,…,a 15 ), Sbox(a 16 ,a 17 ,…,a 23 ), Sbox(a 24 ,a 25 ,…,a 31 )))。因此,本发明对现有技术进行了改进,如图11所示,对32比特长的轮子密钥Ki作逆L’变换,接着将其按字节为单位作为存储S盒输出的8比特,即作为表5所示(s 0 ,s 1 ,…,s 7 ),最后对并行经过4个S盒后的状态位做一次线性变换L’即可节约32个量子存储比特实现合成置换T’并生成当前轮轮子密钥。具体地,设32比特Ki=(Ki 0,Ki 1,…,Ki 31),作逆L’变换后的状态记为K i=(K i 0,K i 1,…,K i 31)。将K i按字节分为(K i 0-7,K i 8-15,K i 16-23,K i 24-31)并将每一字节作为相应S盒的原始输出比特,以K i 0-7为例,表5所示S盒对应的量子实现方案将|x>|y>|014>转换为|x>|ySbox(x) >|014>,其中y对应S盒的输出比特,即表5所示(s 0 ,s 1 ,…,s 7 )。令y= K i 0-7,即可实现|a 0 ,a 1 ,…,a 7 >|K i 0-7>|014> → |a 0 , a 1 ,…,a 7 >|K i 0-7Sbox(a 0 ,a 1 ,…,a 7 ) >|014>。由此,第i轮轮子密钥rk i =Ki+4=KiT’ (a 0 , a 1 ,…,a 31 )=L’(L’ -1(Ki)⊕(Sbox(a 0 ,a 1 ,…,a 7 ),Sbox(a 8 ,a 9 ,…,a 15 ),Sbox(a 16 ,a 17 ,…,a 23 ),Sbox(a 24 ,a 25 ,…,a 31 )))= (K i 0-7⊕(Sbox(a 0 ,a 1 ,…,a 7 ),K i 8-15Sbox(a 8 ,a 9 ,…,a 15 ),K i 16-23Sbox(a 16 ,a 17 ,…,a 23 ),K i 24-31Sbox(a 24 ,a 25 ,…,a 31 )),这使得在无需额外引入量子存储比特即可实现SM4算法的4个并行S盒,因此有利于节约量子比特。根据上述分析,本发明设计的如图11所示电路改进了SM4算法密钥扩展算法中合成置换T’的实现。如图10所示,改进前,4个并行S盒(即τ变换)的输出需存储于32比特长字节中,继而经过线性变换L’从而完成密钥扩展算法中的合成置换T’。而利用如图11所示改进,该量子电路有效减少了32个量子存储比特,其中线性变换L’的逆由如下方式实现:设逆L’变换的输入信号为(y 0 , y 1 ,,y 31 ),输出信号为(x 0 ,x 1 ,,x 31 )。将表1所示实现中的x 0 ,x 24 ,x 2 ,x 3 ,x 27 ,x 5 ,x 7 ,x 30 ,x 8 x 9 ,x 10 ,x 11 ,x 22 ,x 4 ,x 14 ,x 6 ,x 16 ,x 17 ,x 1 ,x 19 ,x 20 ,x 12 ,x 13 ,x 23 ,x 21 ,x 25 ,x 26 ,x 18 ,x 28 ,x 29 ,x 15 ,x 31 的值分别初始化为y 0 ,y 1 ,,y 31 的值,接着逆序执行表1所示操作,最终得到的(x 0 ,x 1 ,,x 31 )即为线性变换L’的逆变换的输出信号。图11所示电路中,L’对应图3所示电路,逆L’即逆向使用图3所示电路,S由第四模块、第五模块、第六模块组成,具体如图7、图8、图9所示。
S1.3.2、设计密钥扩展算法的优化实现方案
针对SM4算法的密钥扩展算法,本发明结合线性子部件的实现以及对非线性子部件T’实现方法的改进(如图11所示),设计了如图12所示电路。图12所示电路中,L’对应图3所示电路,逆L’即逆向使用图3所示电路,τ由四个并行S盒的量子实现电路组成,每一个S由第四模块、第五模块、第六模块组成,具体如图7、图8、图9所示。值得注意的是, 图12并未显示实现S盒所需的辅助量子比特。同时, 将给定参数异或到状态位中, 等价于将状态位中与固定参数中值为1的比特对应的比特位取反。SM4算法的给定参数中, 轮常量的汉明重量为503, 系统参数的汉明重量为64, 这意味着使用503 + 64 = 567个X门即可完成异或轮常数以及系统参数。图12所示SM4算法密钥扩展算法量子实现的资源开销分析如下:
图12共消耗84个基于32比特的异或, 32个τ变换, 每一个τ变换包含4个并行的S盒。此外, 该实现使用32次逆L’变换,其实现代价与L’变换的实现代价相等。综上所述, 图12所示量子电路共需要128 + 4×14 = 184个量子比特, 其中56个为辅助比特, (86×4)×32 = 11008个Toffoli门,(554×4)×32 + 84×32 + 78×2×32 = 78592个CNOT门,89×4×32 + 1070 = 12462个X门,Toffoli深度为46×32 = 1472。
S2、分步设计SM4算法的轮展开中线性变换L和S盒的量子实现方案,设计算法加密流程的量子电路
S2.1、根据算法轮展开中线性变换L对应的二元矩阵生成L的量子实现
与密钥扩展算法中L’变换类似,SM4算法轮展开中线性变换L可以表示成如下二元矩阵:
10100000001000000010000010000000
01010000000100000001000001000000
00101000000010000000100000100000
00010100000001000000010000010000
00001010000000100000001000001000
00000101000000010000000100000100
00000010100000001000000010000010
00000001010000000100000001000001
10000000101000000010000000100000
01000000010100000001000000010000
00100000001010000000100000001000
00010000000101000000010000000100
00001000000010100000001000000010
00000100000001010000000100000001
10000010000000101000000010000000
01000001000000010100000001000000
00100000100000001010000000100000
00010000010000000101000000010000
00001000001000000010100000001000
00000100000100000001010000000100
00000010000010000000101000000010
00000001000001000000010100000001
10000000100000100000001010000000
01000000010000010000000101000000
00100000001000001000000010100000
00010000000100000100000001010000
00001000000010000010000000101000
00000100000001000001000000010100
00000010000000100000100000001010
00000001000000010000010000000101
10000000100000001000001000000010
01000000010000000100000100000001
设线性变换L的输入为(x 0 ,x 1 ,,x 31 ),输出为(y 0 ,y 1 ,,y 31 )。与密钥扩展算法中的线性变换L’的实现类似,本发明采用基于矩阵分解原理的启发式算法生成其自更新异或实现,如表6所示。
表6:线性变换L对应矩阵的自更新实现
Figure 972804DEST_PATH_IMAGE007
经过上述实现,线性变换L的输出信号y 0 ,y 1 ,,y 31 的值依次等于最终的x 2 ,x 19 x 28 ,x 5 ,x 6 ,x 23 ,x 24 ,x 9 ,x 10 ,x 11 ,x 12 ,x 21 ,x 22 ,x 7 ,x 8 ,x 25 ,x 26 ,x 3 ,x 20 ,x 13 ,x 14 ,x 31 ,x 0 ,x 17 ,x 18 ,x 27 x 4 ,x 29 ,x 30 ,x 15 ,x 16 ,x 1 的值。通过CNOT门模拟异或运算可以直接将该实现转换为量子实现,从而在无需借助其他辅助量子比特的情形下使用83个CNOT门实现SM4算法的轮展开中合成置换T中的线性变换L。线性变换L的量子电路如图13所示。
S2.2、基于密钥扩展算法的量子实现方案设计SM4算法轮展开的量子优化实现
SM4算法的轮展开与其密钥扩展算法具有相似的更新函数, 合成置换Tτ和线性变换L组成其与合成置换T’唯一的区别就在于T的线性部分矩阵为L。因此本发明设计的S盒的优化实现电路以及针对合成置换T’做的改进仍然可以用于SM4算法轮展开,具体可用于SM4算法轮展开中的合成置换T中。本发明基于对合成置换T’的改进实现,将图11所示L’以及逆L’更改成L和逆L变换即可优化合成置换T的实现。该量子电路有效减少了32个量子存储比特,其中线性变换L的逆变换由如下方式实现:设逆L变换的输入信号为(y 0 ,y 1 ,, y 31 ),输出信号为(x 0 ,x 1 ,,x 31 )。将表6所示实现中的x 2 ,x 19 ,x 28 ,x 5 ,x 6 ,x 23 ,x 24 ,x 9 ,x 10 ,x 11 x 12 ,x 21 ,x 22 ,x 7 ,x 8 ,x 25 ,x 26 ,x 3 ,x 20 ,x 13 ,x 14 ,x 31 ,x 0 ,x 17 ,x 18 ,x 27 ,x 4 ,x 29 ,x 30 ,x 15 ,x 16 ,x 1 的值分别初始化为y 0 ,y 1 ,,y 31 的值,接着逆序执行表6所示操作,最终得到的(x 0 ,x 1 ,,x 31 )即为线性变换L的逆变换的输出信号。
在轮密钥已知的情况下,即基于图12所示电路的输出,本发明设计了如图14所示量子电路实现SM4算法轮展开。图14所示电路中,L对应图13所示电路,逆L即逆向使用图13所示电路,τ由4个并行S盒的量子电路组成,每一个S由第四模块、第五模块、第六模块组成,具体如图7、图8、图9所示。利用图14所示电路实现SM4算法的量子资源开销分析如下:
基于图12的输出, 即算法轮子密钥已知的情形下,图14共消耗基于32比特的异或150个, 32个τ变换,每一个τ变换包含4个并行的S盒。综上所述, 图14所示量子电路共需要128+4×14 = 184个量子比特,其中56个为辅助比特,(86×4)×32 = 11008个Toffoli门,(554×4)×32+150×32+83×2×32 = 81024个CNOT门,89×4×32 = 11392个X门,Toffoli深度为46×32 = 1472。
S3、综合密钥扩展算法以及轮展开的量子电路设计SM4算法整体量子优化实现方案
考虑到密钥扩展算法与算法轮函数非线性函数调用的先后顺序,图12所示电路中轮子密钥生成后,被置零的辅助比特可以用于图14所示置换τ中并行处理4个S盒。因此本发明针对SM4算法的整体实现(包括密钥扩展算法和轮展开)设计了如图15所示量子实现电路,其量子资源消耗如表7所示,其中对两个比特做SWAP操作可由3个CNOT门模拟,为了避免与电路实现中其他部分CNOT门的消耗混淆,表7单独统计SWAP操作的次数。图15所示量子实现电路中,L对应图13所示电路,逆L即逆向使用图13所示电路,L’对应图3所示电路,逆L’即逆向使用图3所示电路,τ由四个并行S盒的量子实现电路组成,每一个S盒的量子实现电路由第四模块、第五模块、第六模块组成,具体如图7、图8、图9所示。
表7:本发明的SM4算法量子优化实现开销
Toffoli门数 CNOT门数 X门数 SWAP次数 Toffoli深度 量子比特数
密钥扩展 11008 78592 12462 0 1472 128+56<sup>*</sup>
32轮 11008 81024 11392 64 1472 128+56<sup>*</sup>
总计 22016 159616 23854 64 2944 312
注*:56个辅助比特可以重用。
综上,本发明涉及的SM4算法的量子实现电路首先将如图1所示SM4算法加密流程分为密钥扩展算法以及轮展开两部分分开讨论,接着分别为上述两部分设计了如图12以及图14所示量子优化实现电路,最后将图12所示SM4算法密钥扩展算法的量子实现电路与如图14所示SM4算法轮展开的量子实现电路结合,共同构成图15所示SM4算法的量子优化实现电路。具体地,本发明利用基于矩阵分解理论的启发式算法生成了如表6和表1所示SM4算法线性变换LL’的自更新实现,其量子电路分别如图13、图3所示,上述实现无需引入额外的量子辅助比特。同时,本发明基于塔域分解技术生成的如表2所示SM4算法S盒的经典实现,设计了SM4算法S盒的量子实现电路如第四模块、第五模块、第六模块,其中第四模块将第一模块、第二模块、第三模块作为其部分实现。上述对线性变换LL’以及S盒的量子电路设计,分别构成了如图1所示合成置换TT’的量子实现电路。考虑到本发明设计的S盒的量子实现电路的特点以及密钥扩展算法的性质,本发明改进了密钥扩展算法中T’的量子实现方案,如图11所示,该电路能有效节约实现S盒所需的量子存储比特。由于SM4算法轮展开与其密钥扩展算法具有相似的更新函数,因此,本发明设计的如图11所示改进电路的原理同样可以适用于轮展开的量子优化实现。基于上述分析,本发明利用图11所示电路,分别设计了如图12所示SM4算法密钥扩展算法的量子电路以及如图14所示SM4算法轮展开的量子实现电路。图12和图14所示电路共同构成了如图15所示SM4算法的量子优化实现电路。
目前现有技术中针对对称密码算法的量子优化实现常用的结构有Pipeline结构、zig-zag结构以及改进后的zig-zag结构,表8列出了利用上述结构实现SM4算法轮展开所需量子存储比特数量。
表8:现有技术中不同结构实现SM4算法轮展开所需量子存储比特
Pipeline结构 Zig-zag结构 改进后的zig-zag结构
128+32×32 128+8×32 128+32
由表8中的结果可知,本发明基于对SM4算法非线性变换的改进,使得实现SM4算法轮展开无需额外引入量子存储比特保存4个并行S盒的输出,这意味着在不考虑轮子密钥生成代价的前提下,本发明设计的量子实现方案仅需要128个量子存储比特即可实现SM4算法的加密功能,因此,本发明设计的如图15所示SM4算法量子实现电路能有效降低量子比特的使用数量,从而节约算法电路大小以及实现成本。
本发明的保护范围以权利要求的内容为准,任何基于本发明的技术启示而进行的等效变换,也在本发明的保护范围之内。

Claims (7)

1.SM4算法的量子实现电路,其特征在于,电路中的与门由Toffoli门模拟,异或门由CNOT门模拟,取反门由X门模拟;SM4算法S盒电路包括第一模块、第二模块、第三模块、第四模块、第五模块和第六模块,设S盒的总输入信号为x 0 ,x 1 ,…,x 7 ,S盒的总输出信号为s 0 , s 1 ,…,s 7 ,Z和t 0 ,t 1 ,…,t 6 为辅助比特,所有辅助比特的初始值为0,所述第四模块、第五模块和第六模块用于计算S盒的输出信号,所述第四模块的输入信号为S盒的总输入信号,所述第四模块用于依次调用第一模块、第二模块对S盒的总输入信号进行处理,得到中间变量p 0 ,p 1 ,p 2 ,p 3 ,再利用第三模块对中间变量p 0 ,p 1 ,p 2 ,p 3 进行处理,得到中间变量l 0 ,l 1 ,l 2 ,l 3 ,第四模块的输出信号为第五模块的输入信号,第五模块的输出信号为第六模块的输入信号,第六模块用于依次逆向使用第三模块、第二模块、第一模块所示电路以置零所有辅助比特,第六模块的输出即S盒的总输出s 0 ,s 1 ,…,s 7 ,合成置换T’的改进实现电路包括逆L’变换电路、4个S盒电路和L’变换电路,所述逆L’变换电路用于对32比特长的轮子密钥Ki作逆L’变换,并将得到的信号分为4个8比特的信号,每一个8比特的信号均输入对应S盒电路中,S盒电路的输出端均连接到线性变换L’电路线性变换L’电路用于对4个并行S盒电路的输出信号进行线性变换得到其32比特长的输出信号。
2.根据权利要求1所述的SM4算法的量子实现电路,其特征在于,算法S盒的量子实现电路中,第一模块用于利用门电路完成以下运算:x4=x4⊕x2⊕x7,x7=x7⊕1,p0=p0⊕(x7·x4)⊕1,x7=x7⊕1,x6=x6⊕x2⊕x7,x2=x2⊕x0⊕x3,p3=p3⊕(x6·x2)⊕1,x2=x2⊕x0⊕x3,x6=x6⊕x2⊕x7,x3=x3⊕x4⊕x5⊕x7⊕1,x4=x4⊕x6,p1=p1⊕(x3·x4)⊕1,x3=x3⊕x0⊕x2⊕x4⊕x7,x1=x1⊕x3⊕1,p2=p2⊕(x3·x1),x1=x1⊕x3⊕1,x3=x3⊕x0⊕x2⊕x5⊕x6⊕1,x4=x4⊕x2⊕x6⊕x7,x0=x0⊕x4⊕x6,x5=x5⊕x0⊕x1⊕x3⊕x6⊕x7,t0=t0⊕(x0·x5)⊕x0⊕x5⊕1,x5=x5⊕x0⊕x1⊕x2⊕x4⊕x6,p0=p0⊕(x5·x6)⊕x5⊕x6,x6=x6⊕x0⊕x2⊕x5⊕1,x7=x7⊕x0⊕1⊕x1⊕x4⊕x3⊕x6,p0=p0⊕(x6·x7),x7=x7⊕x0⊕x1⊕x3⊕x4⊕x6⊕1,x6=x6⊕x0⊕x2⊕x5⊕1。
3.根据权利要求1所述的SM4算法的量子实现电路,其特征在于,S盒的量子实现电路中,第二模块用于利用门电路完成以下运算:x5=x5⊕x2⊕x3⊕x4⊕x7,x2=x2⊕x6⊕1,x3=x3⊕x0⊕x6⊕x7,p2=p2⊕(x2·x3),x2=x2⊕x6⊕1,p0=p0⊕t0⊕p1⊕p3,x1=x1⊕x5⊕x6,x5=x5⊕x3⊕x4⊕1,p1=p1⊕(x5·x1)⊕x1⊕x5,x5=x5⊕x3⊕x4⊕1,x3=x3⊕x0⊕x6⊕x7,x2=x2⊕x0⊕x6⊕1,x1=x1⊕x6,p1=p1⊕(x2·x1),x1=x1⊕x5,x2=x2⊕x0⊕x6⊕1,p1=p1⊕p2⊕p3⊕x3⊕x5⊕x6⊕x7⊕1,p3=p3⊕t0⊕p2,x2=x2⊕x6⊕1,x7=x7⊕x0⊕x3⊕x6,p2=p2⊕(x2·x7),x2=x2⊕x6⊕1,x0=x0⊕x4⊕x6,x7=x7⊕x2⊕x0⊕x5,x2=x2⊕x0⊕x4⊕x7⊕1,x5=x5⊕x1⊕x6,p2=p2⊕p0⊕x1⊕t0⊕(x7·x6)⊕x7⊕x6⊕(x2·x5),x5=x5⊕x1⊕x6,x2=x2⊕x0⊕x4⊕x7⊕1,x6=x6⊕x0⊕x4,x1=x1⊕x0⊕x2⊕x7,t0=t0⊕(x6·x1)⊕x6⊕x1⊕1。
4.根据权利要求1所述的SM4算法的量子实现电路,其特征在于,S盒的量子实现电路中,第三模块用于利用门电路完成以下运算:t1=t1⊕(p0·p3)⊕1,t2=t2⊕(t1·p1)⊕t1⊕p1⊕1,t1=t1⊕t2⊕p1,t4=t4⊕p2⊕(p1·p3)⊕1,t5=t5⊕(p1·t4)⊕p1⊕t4,t3=t3⊕(p2·t4)⊕1,t6=t6⊕(p0·t4)⊕p0⊕t4⊕1,t5=t5⊕t6,l2=l2⊕(t5·t1)⊕1,l3=l3⊕t5⊕p0⊕1,t5=t5⊕t6⊕(p1·t4)⊕p1⊕t4,t4=t4⊕p2⊕(p1·p3),t4=t4⊕(t6·t2)⊕t6⊕t2,l1=l1⊕(t3·t4)⊕1,l0=l0⊕(t4·p2)⊕p3
5.根据权利要求1所述的SM4算法的量子实现电路,其特征在于,S盒的量子实现电路中,第四模块用于依次调用第一模块、第二模块、第三模块,并利用门电路完成以下运算:x1=x1⊕x0⊕x2⊕x7,x7=x7⊕x2⊕x3⊕x4⊕x5,x6=x6⊕x0⊕x4,x2=x2⊕x3⊕x4⊕x5⊕1,Z=Z⊕(x2·l0)⊕1,s2=s2⊕Z,s5=s5⊕Z,s7=s7⊕Z,Z=Z⊕(x2·l0)⊕1,x2=x2⊕x3⊕x4⊕x5⊕1,x4=x2⊕x4⊕x6⊕x7,Z=Z⊕(x4·l0),s0=s0⊕Z,s1=s1⊕Z,s3=s3⊕Z,s4=s4⊕Z⊕1,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x4·l0),x4=x2⊕x4⊕x6⊕x7,x0=x0⊕x1⊕x3⊕x4⊕x5⊕x7,Z=Z⊕(x0·l1)⊕1,s3=s3⊕Z,s7=s7⊕Z,Z=Z⊕(x0·l1),x0=x0⊕x1⊕x3⊕x4⊕x5⊕x7,x6=x6⊕x0⊕x4,Z=Z⊕(x6·l1),s1=s1⊕Z,s2=s2⊕Z,Z=Z⊕(x6·l1),x6=x6⊕x0⊕x4,x7=x7⊕1,Z=Z⊕(x7·l2),s1=s1⊕Z,s3=s3⊕Z,s5=s5⊕Z,s6=s6⊕Z,Z=Z⊕(x7·l2)。
6.根据权利要求1所述的SM4算法的量子实现电路,其特征在于,第五模块用于利用门电路完成以下运算:x7=x7⊕1,x2=x2⊕x4⊕x7,Z=Z⊕(x2·l2),s0=s0⊕Z,s1=s1⊕Z,s2=s2⊕Z,s5=s5⊕Z,s6=s6⊕Z,Z=Z⊕(x2·l2),x2=x2⊕x4⊕x7,x7=x7⊕x0⊕x3⊕x4,Z=Z⊕(x7·l3),s1=s1⊕Z,s2=s2⊕Z,s5=s5⊕Z,s6=s6⊕Z,Z=Z⊕(x7·l3),x7=x0⊕x3⊕x4⊕x7,x6=x6⊕x2⊕1,Z=Z⊕(x6·l3)⊕1,s1=s1⊕Z,s3=s3⊕Z,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x6·l3),x6=x6⊕x2⊕1,l3=l3⊕l2,x0=x0⊕x2⊕x3,s0=s0⊕(x0·l3)⊕1,x0=x0⊕x2⊕x3,x2=x2⊕x6⊕x7,Z=Z⊕(x2·l3),s5=s5⊕Z,s7=s7⊕Z,Z=Z⊕(x2·l3),x2=x2⊕x6⊕x7,l3=l3⊕l2,l2=l2⊕l0,Z=Z⊕(x6·l2),s1=s1⊕Z,s4=s4⊕Z,s6=s6⊕Z,Z=Z⊕(x6·l2),x5=x2⊕x3⊕x4⊕x5⊕x7,s1=s1⊕(x5·l2)⊕1,x5=x2⊕x3⊕x4⊕x5⊕x7,l2=l2⊕l0,l0=l0⊕l1,x0=x0⊕x2⊕x3⊕x5⊕x6⊕1,Z=Z⊕(x0·l0),s1=s1⊕Z,s5=s5⊕Z,s7=s7⊕Z,Z=Z⊕(x0·l0),x1=x0⊕x1⊕1,Z=Z⊕(x1·l0),s0=s0⊕Z,s1=s1⊕Z,s4=s4⊕Z,s6=s6⊕Z,Z=Z⊕(x1·l0),x1=x0⊕x1⊕1。
7.根据权利要求1所述的SM4算法的量子实现电路,其特征在于,S盒的量子实现电路中,第六模块用于利用门电路完成以下运算:x0=x0⊕x2⊕x3⊕x5⊕x6⊕1,l0=l0⊕l2⊕l3,x5=x5⊕x1⊕x6,Z=Z⊕(x5·l0),s1=s1⊕Z,s2=s2⊕Z,s3=s3⊕Z,s5=s5⊕Z,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x5·l0),x5=x5⊕x1⊕x6,x3=x3⊕x0⊕x5⊕x7⊕1,Z=Z⊕(x3·l0),s2=s2⊕Z,s3=s3⊕Z,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x3·l0),x3=x3⊕x0⊕x5⊕x7⊕1,l0=l0⊕l1⊕l2⊕l3,l1=l1⊕l3,x1=x1⊕x5,Z=Z⊕(x1·l1),s2=s2⊕Z,s3=s3⊕Z,s4=s4⊕Z,s5=s5⊕Z,s7=s7⊕Z,Z=Z⊕(x1·l1),x1=x1⊕x5,x0=x0⊕x2⊕x4⊕1,Z=Z⊕(x0·l1),s1=s1⊕Z,s2=s2⊕Z,s3=s3⊕Z,s6=s6⊕Z,s7=s7⊕Z,Z=Z⊕(x0·l1)⊕1,x0=x0⊕x2⊕x4⊕1,l1=l1⊕l3,x6=x6⊕x0⊕x4,x7=x7⊕x2⊕x3⊕x4⊕x5,x1=x1⊕x0⊕x2⊕x7.接着依次逆向使用第三模块、第二模块、第一模块的电路,初始化所有量子辅助比特并输出S盒的总输出信号s0,s1,…,s7
CN202110606979.7A 2021-05-31 2021-05-31 Sm4算法的量子实现电路 Active CN113255923B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110606979.7A CN113255923B (zh) 2021-05-31 2021-05-31 Sm4算法的量子实现电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110606979.7A CN113255923B (zh) 2021-05-31 2021-05-31 Sm4算法的量子实现电路

Publications (2)

Publication Number Publication Date
CN113255923A CN113255923A (zh) 2021-08-13
CN113255923B true CN113255923B (zh) 2021-09-14

Family

ID=77185676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110606979.7A Active CN113255923B (zh) 2021-05-31 2021-05-31 Sm4算法的量子实现电路

Country Status (1)

Country Link
CN (1) CN113255923B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114422111B (zh) * 2022-03-30 2022-06-17 湖北大学 一种轻量级的sm4算法的硬件实现电路

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1921382B (zh) * 2006-09-06 2010-05-12 华为技术有限公司 一种基于aes算法的加解密方法及加解密器
CN101719823B (zh) * 2009-10-30 2012-07-11 中国科学院软件研究所 一种实现密码算法中的s-盒线性变换的方法
CN104065473A (zh) * 2014-06-25 2014-09-24 成都信息工程学院 Sm4分组密码算法s盒的紧凑实现方法
CN106209358B (zh) * 2016-07-12 2019-03-12 黑龙江大学 一种基于长密钥的sm4密钥扩展算法的实现系统及其方法
US10423887B2 (en) * 2016-11-23 2019-09-24 Microsoft Technology Licensing, Llc Compilation, memory management, and fault localization with ancillas in an unknown state
US11250341B2 (en) * 2017-09-07 2022-02-15 Lockheed Martin Corporation System, method and computer readable medium for quassical computing
CN110380844B (zh) * 2018-04-13 2021-01-29 华为技术有限公司 一种量子密钥分发方法、设备及存储介质
CN108650076A (zh) * 2018-05-16 2018-10-12 南通大学 基于量子可逆逻辑的aes加密系统硬件模块的实现方法
CN110120867B (zh) * 2019-04-29 2022-02-22 南通大学 一种基于量子可逆线路的aes硬件加密系统的实现方法
CN110149207B (zh) * 2019-06-06 2021-03-30 湖南大学 基于机器学习的新型连续变量量子密钥分发方法
CN110188564B (zh) * 2019-07-09 2024-01-26 江苏亨通问天量子信息研究院有限公司 基于量子密钥加密的移动数据存储终端
CN111310928B (zh) * 2020-02-28 2024-03-05 东南大学 通用量子比较电路的实现方法
CN111510296A (zh) * 2020-04-13 2020-08-07 北京芯讯信安科技有限公司 Sm4/aes双模加密电路
CN112507644B (zh) * 2020-12-03 2021-05-14 湖北大学 优化的sm4算法线性层电路

Also Published As

Publication number Publication date
CN113255923A (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
Zhang A new unified image encryption algorithm based on a lifting transformation and chaos
Zhu et al. Secure image encryption scheme based on a new robust chaotic map and strong S-box
Dong et al. A novel image encryption scheme based on pseudo-random coupled map lattices with hybrid elementary cellular automata
Bartholdi et al. Some solvable automaton groups
CN113255923B (zh) Sm4算法的量子实现电路
Xia et al. Design and simulation of quantum image binarization using quantum comparator
Li et al. Keyed hash function based on a dynamic lookup table of functions
CN103368725B (zh) 一种g0类s盒构造方法及其电路
Wang et al. Cryptanalysis of a white‐box SM4 implementation based on collision attack
Paliwal et al. Hardware design of image encryption and decryption using CORDIC based chaotic generator
CN103378968B (zh) 一种g1类s盒构造方法及其电路
CN109981247B (zh) 一种基于整数化混沌映射的动态s盒生成方法
CN111478766B (zh) 一种分组密码meg实现方法、装置及存储介质
CN109033847B (zh) Aes加密运算单元、aes加密电路及其加密方法
Khan Synthesis of quaternary reversible/quantum comparators
CN109936437B (zh) 一种基于d+1阶掩码的抗功耗攻击方法
CN106201435A (zh) 基于细胞神经网络的伪随机数生成方法
Khan A recursive method for synthesizing quantum/reversible quaternary parallel adder/subtractor with look-ahead carry
Chen et al. Lightweight design of SM4 algorithm and realization of threshold scheme
CN108989018B (zh) 一种aes加密单元、aes加密电路及加密方法
CN102684680B (zh) 四位三值可逆全加器
Ashmawy et al. A faster hardware implementation of the AES S-box
CN116545621B (zh) 密钥交换过程中椭圆曲线多标量乘快速实现方法及系统
CN113971015B (zh) Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质
CN112272091B (zh) 一种具有均匀分布特征的多维整数混沌伪随机序列的生成方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant