CN109274484B - 一种对数据进行保密增强的方法及量子密钥分发终端 - Google Patents
一种对数据进行保密增强的方法及量子密钥分发终端 Download PDFInfo
- Publication number
- CN109274484B CN109274484B CN201710581985.5A CN201710581985A CN109274484B CN 109274484 B CN109274484 B CN 109274484B CN 201710581985 A CN201710581985 A CN 201710581985A CN 109274484 B CN109274484 B CN 109274484B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- random number
- random
- secrecy
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0852—Quantum cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
Abstract
本申请公开了一种对数据进行保密增强的方法及量子密钥分发终端,该方法包括:确定待保密增强数据的数据位数N;确定对所述待保密增强数据进行保密增强后的数据位数m,m小于N;获取m+N‑1个随机数;对属于随机矩阵的至少两个随机子矩阵以及属于待增强矩阵的至少两个待增强子矩阵进行处理,以获取所述随机矩阵与所述待增强矩阵相乘后的矩阵数据,所述矩阵数据是对所述待保密增强数据进行保密增强后的数据;其中,所述随机矩阵是由所述m+N‑1个随机数构成的m行N列的Toeplitz矩阵,所述待增强矩阵是由所述待保密增强数据的N个数据位构成的N行1列矩阵。通过本申请,能够提高保密增强后的数据安全性。
Description
技术领域
本申请涉及量子密钥分发技术领域,尤其涉及一种对数据进行保密增强的方法及量子密钥分发终端。
背景技术
量子密钥分发(Quantum Key Distribution,简称QKD)与经典密钥体系的根本不同在于,其采用光子的不同量子态作为密钥的载体,由量子力学的基本原理保证了该过程的不可窃听、不可破译性,从而提供了一种更为安全的密钥体系。
参见图1所示的QKD系统示意图,QKD系统中的两个QKD终端Alice和Bob,用于生成相同的量子密钥。具体地,Alice通过量子信道将原始密钥数据发送给Bob,之后,Alice和Bob使用经典信道进行通信,从原始密钥数据中提取基矢一致的数据以完成数据筛选,得到筛选后密钥Sifted Key,再使用纠错算法,将两端有一定错误的Sifted Key协商达到一致,得到纠错后密钥Corrected Key,最后根据评估的压缩比例对Corrected Key进行保密增强,得到最终密钥Final Key并输出。
在上述量子密钥生成过程中,经纠错产生的两端一致的Corrected Key还不能作为最终的Final Key使用,原因是量子信道或经典信道上的信息泄露可能引起的数据不安全。进行保密增强的目的就是将Corrected Key通过矩阵压缩映射到更短的安全密钥,消除之前步骤中引入的信息泄露。
现有技术采用经典压缩算法或者比如MD5的Hash算法,按照评估的压缩比例对Corrected Key进行压缩,得到最终的Final Key,但是现有算法的安全性较低,不能确保最终压缩后的Final Key是安全的。
发明内容
本申请实施例的主要目的在于提供一种对数据进行保密增强的方法及量子密钥分发终端,能够提高保密增强后的数据安全性。
本申请提供了一种对数据进行保密增强的方法,包括:
确定待保密增强数据的数据位数N;
确定对所述待保密增强数据进行保密增强后的数据位数m,m小于N;
获取m+N-1个随机数;
对属于随机矩阵的至少两个随机子矩阵以及属于待增强矩阵的至少两个待增强子矩阵进行处理,以获取所述随机矩阵与所述待增强矩阵相乘后的矩阵数据,所述矩阵数据是对所述待保密增强数据进行保密增强后的数据;
其中,所述随机矩阵是由所述m+N-1个随机数构成的m行N列的Toeplitz矩阵,所述待增强矩阵是由所述待保密增强数据的N个数据位构成的N行1列矩阵。
可选的,所述对属于随机矩阵的至少两个随机子矩阵以及属于待增强矩阵的至少两个待增强子矩阵进行处理,以获取所述随机矩阵与所述待增强矩阵相乘后的矩阵数据,包括:
将所述待保密增强数据的N位数据进行顺序存储,以及将所述m+N-1个随机数进行顺序存储;其中,当读取数据时,从所述待保密增强数据的第1位数据开始按照存储顺序进行读取,从第i*P+1个随机数开始按照存储顺序进行读取,i=0,1……(m/P)-1,P小于m和N;
预先读取P位随机数,接下来按照下述方式完成第i轮子矩阵运算操作:
读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵;从所述待保密增强数据中读取P位数据,构造P行1列的待增强子矩阵;将所述随机子矩阵与所述待增强子矩阵相乘;将本次的子矩阵相乘结果与上一次的子矩阵相乘结果进行异或运算,获取包括P位数据的运算结果;循环执行所述读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵,直到所述待保密增强数据的全部数据位被读取完为止;
获取以上m/P轮所述子矩阵运算操作的运算结果,得到m位数据。
可选的,所述将所述待保密增强数据的N位数据进行顺序存储,以及将所述m+N-1个随机数进行顺序存储,包括:
将所述m+N-1个随机数顺序存储在第一RAM中,并将所述待保密增强数据的N位数据顺序存储在第二RAM中;
则,在所述子矩阵运算操作中:
在当前时钟周期内,从所述第一RAM中读取本次子矩阵相乘操作所需的P个随机数,并从所述第二RAM中读取本次子矩阵相乘操作所需的P位数据,同时对上一时钟周期读取的数据进行子矩阵相乘操作。
可选的,利用计算芯片完成所述第i轮子矩阵运算操作,所述计算芯片为现场可编程门阵列FPGA、或数字信号处理器DSP、或高级精简指令集计算机ARM、或中央处理器CPU。
可选的,所述m+N-1个随机数是通过数据完整性认证后的m+N-1个真随机数;或者,所述m+N-1个随机数是利用基于线性反馈移位寄存器LFSR的伪随机序列发生器生成的m+N-1个伪随机数。
可选的,所述数据完整性认证的认证方法采用了HMAC-SM3算法。
本申请还提供了一种量子密钥分发终端,包括:
数据位数确定单元,用于确定待保密增强数据的数据位数N,并确定对所述待保密增强数据进行保密增强后的数据位数m,m小于N;
随机数获取单元,用于获取m+N-1个随机数;
增强数据获取单元,用于对属于随机矩阵的至少两个随机子矩阵以及属于待增强矩阵的至少两个待增强子矩阵进行处理,以获取所述随机矩阵与所述待增强矩阵相乘后的矩阵数据,所述矩阵数据是对所述待保密增强数据进行保密增强后的数据;其中,所述随机矩阵是由所述m+N-1个随机数构成的m行N列的Toeplitz矩阵,所述待增强矩阵是由所述待保密增强数据的N个数据位构成的N行1列矩阵。
可选的,所述增强数据获取单元包括:
数据存储子单元,用于将所述待保密增强数据的N位数据进行顺序存储,以及将所述m+N-1个随机数进行顺序存储;其中,当读取数据时,从所述待保密增强数据的第1位数据开始按照存储顺序进行读取,从第i*P+1个随机数开始按照存储顺序进行读取,i=0,1……(m/P)-1,P小于m和N;
矩阵运算子单元,用于预先读取P位随机数,接下来按照下述方式完成第i轮子矩阵运算操作:读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵;从所述待保密增强数据中读取P位数据,构造P行1列的待增强子矩阵;将所述随机子矩阵与所述待增强子矩阵相乘;将本次的子矩阵相乘结果与上一次的子矩阵相乘结果进行异或运算,获取包括P位数据的运算结果;循环执行所述读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵,直到所述待保密增强数据的全部数据位被读取完为止;
数据获取子单元,用于获取以上m/P轮所述子矩阵运算操作的运算结果,得到m位数据。
可选的,所述数据存储子单元,具体用于将所述m+N-1个随机数顺序存储在第一RAM中,并将所述待保密增强数据的N位数据顺序存储在第二RAM中;
则,所述矩阵运算子单元,具体用于在当前时钟周期内,从所述第一RAM中读取本次子矩阵相乘操作所需的P个随机数,并从所述第二RAM中读取本次子矩阵相乘操作所需的P位数据,同时对上一时钟周期读取的数据进行子矩阵相乘操作。
可选的,所述矩阵运算子单元,具体用于利用计算芯片完成所述第i轮子矩阵运算操作,所述计算芯片为现场可编程门阵列FPGA、或数字信号处理器DSP、或高级精简指令集计算机ARM、或中央处理器CPU。
可选的,所述m+N-1个随机数是通过数据完整性认证后的m+N-1个真随机数;或者,所述m+N-1个随机数是利用基于线性反馈移位寄存器LFSR的伪随机序列发生器生成的m+N-1个伪随机数。
可选的,所述数据完整性认证的认证方法采用了HMAC-SM3算法。
本申请提供的对数据进行保密增强的方法及量子密钥分发终端,需要获取待保密增强数据Corrected Key的N个数据位,这N个数据位可以构造一个N行1列的待保密增强矩阵;获取m+N-1个随机数,这m+N-1个随机数可以构造一个m行N列的Toeplitz矩阵;通过构造所述待保密增强矩阵的待增强子矩阵、以及构造所述Toeplitz矩阵的随机子矩阵,并对这些子矩阵进行拼接运算,最终获取所述Toeplitz矩阵与所述待增强矩阵相乘后的m行1列矩阵,该m行1列矩阵的矩阵数据即为对所述待保密增强数据进行保密增强后的密钥数据,即Final Key。可见,本申请使用属于Toeplitz矩阵的随机子矩阵对待保密增强数据进行压缩处理,与现有技术相比,可以降低保密增强后得到的密钥数据的碰撞率,从而提高了密钥数据的随机性,进而提高了密钥数据的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的QKD系统示意图;
图2为本申请实施例提供的一种对数据进行保密增强的方法的流程示意图;
图3为本申请实施例提供的基于真随机数的保密增强实现方法示意图;
图4为本申请实施例提供的基于伪随机数的保密增强实现方法示意图;
图5为本申请实施例提供的一种量子密钥分发终端的组成示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
Toeplitz矩阵作为Two-Universal函数族的特例,其具有更简单的构造方法和更少的资源消耗,适用于量子密钥分发(Quantum Key Distribution,简称QKD)终端对待保密增强数据Corrected Key进行保密增强。
Toeplitz矩阵大小根据保密增强前后的密钥长度而定,即,当保密增强前的Corrected Key的密钥长度为N,保密增强后的Final Key的密钥长度为m时,Toeplitz矩阵则是一个m行N列矩阵,由于Toeplitz矩阵中每条自左上至右下的斜线上的元素均相同,所以,其只需要m+N-1比特位数据来描述。在获取到这m+N-1比特位数据之后,即可构造Toeplitz矩阵Tm*N,其结构如下所示:
其中,Tm*N中的每个矩阵元素Ti,j=tj-i+m。
由于Corrected Key的比特位数为N,因此可以构造成一个N行1列的矩阵(CK)N*1,通过矩阵运算(FK)m*1=Tm*N×(CK)N*1,即可从Corrected Key得到m比特位的最终安全密钥Final Key,即(FK)m*1。
但是,考虑到Toeplitz矩阵Tm*N通常比较大,不利于存储,而且矩阵Tm*N和(CK)N*1的相乘过程中,需要以矩阵元素为单位进行逐一计算,导致耗时过长。因此,为了节省存储空间以及加快数据处理速度,本申请一种对数据进行保密增强的方法,并不直接存储Tm*N和(CK)N*1,而是利用Tm*N和(CK)N*1中的矩阵元素构造对应矩阵的子矩阵,通过对这些子矩阵进行拼接计算,得到Tm*N和(CK)N*1的计算结果。
参见图2,为本申请实施例提供的一种对数据进行保密增强的方法的流程示意图,该方法包括:
S201:确定待保密增强数据的数据位数N。
如图1所示,对于QKD系统的两个QKD终端(Alice和Bob),各自在完成一次基矢比对后,输出了Sifted Key,对Sifted Key纠错后输出两端一致的Corrected Key,CorrectedKey即为待保密增强数据,Corrected Key的比特位数即为待保密增强数据的数据位数N,N为整数。
S202:确定对所述待保密增强数据进行保密增强后的数据位数m,其中,m小于N。
参见图3和图4所示的保密增强实现方法示意图。Alice和Bob可以根据QKD运行过程中的基矢比对、纠错等阶段得到的密钥信息,评估Corrected Key中的安全成码比例,该安全成码比例即为保密增强因子Factor,Factor就是对Corrected Key的压缩比例,其值一般在0~0.5之间。
计算m=N*Factor,m即为对Corrected Key进行保密增强后得到的最终密钥FinalKey的数据位数。
S203:获取m+N-1个随机数。
在本实施例中,所述随机数可以是真随机数也可以是伪随机数。
当所述随机数为真随机数时,所述m+N-1个随机数可以是通过数据完整性认证后的m+N-1个真随机数。具体地,参见图3,Alice获取到m+N-1个真随机数后,将这m+N-1个真随机数通过经典网络发送给Bob,由于真随机数在传输过程中可能被第三方篡改,为保证Alice和Bob两端的m+N-1个真随机数在网络传输过程中不被篡改,可以对两端的m+N-1个真随机数进行数据完整性认证。
例如,可以通过HMAC-SM3算法对m+N-1个真随机数进行数据完整性认证,具体可以采用以下两种方式之一实现:
一种实现方式是:为便于描述,将m+N-1个真随机数称为待认证数据;进行验证时,Alice利用第一密钥对本端的待认证数据进行HMAC-SM3运算,得到第一哈希值,并利用第二密钥对所述第一哈希值进行加密,将得到的第一密文发送至Bob;Bob也利用第一密钥对本端的待认证数据进行HMAC-SM3运算,得到第二哈希值,并利用与所述第二密钥不同的第三密钥对所述第二哈希值进行加密,将得到的第二密文发送至所述Alice。Alice利用所述第三密钥对接收的第二密文进行解密,判断解密后的哈希值与所述第一哈希值是否相同,若相同,则确定发送至Bob的待认证数据没被篡改,若不同,则确定被篡改;Bob利用所述第二密钥对接收的第一密文进行解密,判断解密后的哈希值与第二哈希值是否相同,若相同,则确定从Alice接收的待认证数据没被篡改,若不同,则确定被篡改。
另一种实现方式是:为便于描述,同样将m+N-1个真随机数称为待认证数据;进行验证时,Alice利用第四密钥对本端的待认证数据进行HMAC-SM3运算,得到第三哈希值,并且利用第五密钥也对本端的待认证数据进行HMAC-SM3运算,得到第四哈希值,然后,将所述第四哈希值发送至Bob,其中,所述第四密钥与所述第五密钥为不同的密钥;同样地,Bob同样利用第四密钥对本端的待认证数据进行HMAC-SM3运算,得到第五哈希值,并且利用第五密钥对本端的待认证数据进行HMAC-SM3运算,得到第六哈希值,然后,将所述第五哈希值发送至Alice。Alice判断所述第三哈希值与接收的第五哈希值是否相同,若相同,则确定发送至Bob的待认证数据没被篡改,若不同,则确定被篡改;Bob判断接收的第四哈希值与所述第六哈希值是否相同,若相同,则确定从Alice接收的待认证数据没被篡改,若不同,则确定被篡改。
通过上述数据完整性认证方式,如果Alice确定向Bob发送的m+N-1个真随机数没有被篡改、以及Bob确定从Alice接收的m+N-1个真随机数没有被篡改,则二者继续后续步骤,否则,重新获取并共享m+N-1个真随机数,并重新对两端的m+N-1个真随机数进行数据完整性认证。
当所述随机数为伪随机数时,所述m+N-1个随机数可以是利用基于线性反馈移位寄存器LFSR的伪随机序列发生器生成的m+N-1个伪随机数。具体地,参见图4,可以使用线性反馈移位寄存器(Linear Feedback Shift Register,简称LFSR)生成m+N-1比特伪随机序列,具体可以使用Alice和Bob两端一致的“对称密钥”作为LFSR种子生成m+N-1比特伪随机序列。例如,可以选择一个本原多项式,假设选用任意64阶本原多项式,比如x^64+x^7+x^6+x^5+x^4+x^2+x+1,使用64阶本原多项式构造LFSR伪随机序列发生器,通过使用Alice和Bob产生的两端一致的64bits对称密钥作为LFSR伪随机序列发生器的初始随机数种子,产生m+N-1比特伪随机序列。
可以理解的是,如果需要生成的伪随机数较多,可以选择阶数较高的本原多项式,这样LFSR伪随机序列发生器可以输出更多不同的伪随机数,这样,在利用m+N-1个随机数对待保密增强数据Corrected Key进行保密增强时,保密增强后的密钥数据更具随机性,从而更加安全。
在本实施例中,由于每次保密增强后的数据长度m可能会不同,为了避免每次都获取不同数量的随机数,可以每次都获取相同且足够数量的随机数,比如每次均获取2Nmax-1个随机数,其中,Nmax为待保密增强数据Corrected Key的最大值,后续步骤中Alice和Bob使用其中的m+N-1个随机数即可。
S204:对属于随机矩阵的至少两个随机子矩阵以及属于待增强矩阵的至少两个待增强子矩阵进行处理,以获取所述随机矩阵与所述待增强矩阵相乘后的矩阵数据,所述矩阵数据是对所述待保密增强数据进行保密增强后的数据。
其中,所述随机矩阵是由所述m+N-1个随机数构成的m行N列的Toeplitz矩阵,所述待增强矩阵是由所述待保密增强数据的N个数据位构成的N行1列矩阵。
在本实施例中,可以使用Alice和Bob两端共享的m+N-1个真随机数或LFSR伪随机序列发生器输出的m+N-1个伪随机数,作为构造m行N列的Toeplitz矩阵的数据源。需要说明的是,当使用真随机数构造Toeplitz矩阵,并使用该Toeplitz矩阵对Corrected Key进行压缩,可以保证Corrected Key被压缩时足够随机,从而保证最终密钥Final Key对于攻击者而言是完全随机的,因此能够保证Final Key的安全性;当使用伪随机数构造Toeplitz矩阵时,由于作为初始随机数种子的对称密钥完全保密,且每次保密增强计算都会更新该对称密钥,这样,可以保证每次构造的Toeplitz矩阵不同,从而使得窃听者无法获取Toeplitz矩阵的构造,保证了后续对Corrected Key压缩操作的安全性。
实际上,将Corrected Key对应的矩阵(CK)N*1与Toeplitz矩阵Tm*N相乘,相乘结果(FK)m*1即为长度为m bits的Final Key。例如,假设有256kbits的待保密增强数据Corrected Key,保密增强因子为0.2,则最终应该输出51.2kbits有效Final Key数据;如果按照矩阵相乘基本原理计算,需要使用(256000+51200-1)个真随机数或伪随机数构造一个51200行x256000列的Toeplitz矩阵,与256000bits的Corrected Key构造的256000行x1列矩阵做矩阵相乘运算,其结果即为51.2kbits有效Final Key数据。
但是,如果采用上述矩阵相乘运算,当Toeplitz矩阵较大时,不利于矩阵存储,而且按照逐一bit计算的方法计算,耗时太长。因此,为避免大矩阵的存储、以及实现高速的矩阵相乘运算,完成对Corrected Key特定比例的压缩,本实施例可以采用步骤S204的矩阵分块方法,加快Corrected Key与Toeplitz矩阵相乘运算的速度。
因此,在本申请的一个实施例中,步骤S204可以采用子矩阵拼接运算的实现方式得到矩阵相乘结果(FK)m*1,具体可以包括以下步骤A-B:
步骤A:将所述待保密增强数据的N位数据进行顺序存储,以及将所述m+N-1个随机数进行顺序存储。
在本申请的一种实施方式中,步骤A具体可以包括:将所述m+N-1个随机数顺序存储在第一RAM中,并将所述待保密增强数据Corrected Key的N位数据顺序存储在第二RAM中。例如,可以将Corrected Key与m+N-1个随机数分别保存在现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)内部两个独立的RAM中。
当从两个RAM中读取数据时,可以根据FPGA总线带宽确定从每一RAM中读取的数据量。例如,若总线带宽为128bits,则FPGA在每个时钟周期内,可以同时从第一RAM中读取128bits的随机数、以及从第二RAM中读取128bits的Corrected Key数据。
下面采用以下步骤B的方式,按照i的取值顺序,即i=0,1……(m/P)-1(其中,P小于m和N,P具体可以小于或等于FPGA的总线带宽),依次完成m/P轮的子矩阵运算操作。在第i轮子矩阵运算操作中需要读取P位Corrected Key数据以及P位随机数,当读取CorrectedKey数据时,从Corrected Key的第1位数据开始按照存储顺序进行读取;当读取随机数时,从第i*P+1个随机数开始按照存储顺序进行读取。
步骤B:预先读取P位随机数,接下来按照下述方式完成第i轮子矩阵运算操作,以获取m/P轮所述子矩阵运算操作的运算结果,最终得到m位数据,其中,该m位数据即为对Corrected Key进行保密增强后的Final Key。
其中,第i轮子矩阵运算操作:读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵;从所述待保密增强数据中读取P位数据,构造P行1列的待增强子矩阵;将所述随机子矩阵与所述待增强子矩阵相乘;将本次的子矩阵相乘结果与上一次的子矩阵相乘结果进行异或运算,获取包括P位数据的运算结果;循环执行所述读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵,直到所述待保密增强数据的全部数据位被读取完为止。
在本申请的一种实施方式中,步骤B具体可以利用计算芯片完成第i轮子矩阵运算操作,所述计算芯片可以为FPGA、或数字信号处理(Digital SignalProcessing,简称DSP)处理器、或高级精简指令集计算机(Advanced RISC Machines,简称ARM)、或中央处理器(Central Processing Unit,简称CPU)等。
为便于理解步骤B,下面举例说明:
当采用FPGA实现步骤B时,如果FPGA总线带宽为128bits,则每次从第一RAM和第二RAM中分别读取128bits数据,此外,以下Toeplitz子矩阵即为所述随机子矩阵。
第1步,提前从第一RAM中读取128bits随机数,准备构造128行x 128列的Toeplitz子矩阵;
第2步,从第一RAM、第二RAM中同时读取128bits的随机数和Corrected Key,使用本次和上次读取的共256bits随机数构造128行x 128列的Toeplitz子矩阵:
使用128bits纠错后密钥Corrected Key构造128行x 1列的待增强子矩阵:
其中,上述子矩阵以及后续子矩阵中每一数据元素的下标,为其在RAM中的顺序编码号。
第3步,将子矩阵T1128*128与CK1128*1进行矩阵相乘,得到第一个子矩阵相乘结果RFK1:
其中,第2步和第3步以及后续的类似步骤,可以使每个时钟周期都能读出新的128bits Corrected Key和随机数,同时又能实现上一个时钟周期读出数据组成的子矩阵T1128*128与CK1128*1的相乘运算。
这是因为,每次读出128bits Corrected Key和随机数后,需要将这一组数据放入寄存器中存储,以便后续进行子矩阵相乘运算,但是,从读取数据到将其放入寄存器中需要耗费一定的时间,因此,不能在同一时钟周期内完成同一组数据的读取和子矩阵相乘操作。然而,由于上一个时钟周期的读出数据已经置于寄存器中,因此可以在FPGA的当前时钟周期内即同一时钟周期内,从第一RAM中读取本次子矩阵相乘操作所需的P个随机数,并从第二RAM中读取本次子矩阵相乘操作所需的P位数据,同时对上一时钟周期读取的数据进行子矩阵相乘操作。
第4步,再从第一RAM、第二RAM中同时读取128bits的随机数和Corrected Key,使用新的128bits随机数与前一次读取的128bits随机数一起构造128行x 128列的Toeplitz子矩阵:
使用128bits纠错后密钥Corrected Key构造128行x 1列的待增强子矩阵:
第5步,将子矩阵T2128*128与CK2128*1相乘,得到第二个子矩阵相乘结果RFK2:
第6步,将RFK1与RFK2按位异或,生成最新的RFK_pre:
第7步,继续从第一RAM、第二RAM中同时读取128bits的随机数和Corrected Key,使用新的128bits随机数与前一次读取的128bits随机数一起构造128行x 128列的Toeplitz子矩阵,与128bits纠错后密钥Corrected Key构造128行x 1列的待增强子矩阵相乘,得到新的RFK_new:
第8步,将RFK_pre与RFK_new按位异或,更新得到最新的RFK_pre:
第9步,继续重复第7~8步,直到所有的Corrected Key数据按照128bits分组全部参与到子矩阵运算中,其中,如果最后一组Corrected Key数据不足128bits,则通过补零得到128bits,这样并不影响最终计算结果。此时的RFK_pre即为第一组128bits的Final Key,其是所有Corrected Key数据构成的N行x1列矩阵与随机数构造的Toeplitz矩阵的等效相乘结果。
第10步,为了计算第二组128bits的Final Key,重新从{CK0……CK127}开始构造第一个待增强子矩阵,并且使用随机数{T128……T382}构造第一个Toeplitz子矩阵:
之后重复3~9步,计算完成第二组128bits的Final Key。
第11步,之后继续计算第3组128bits的Final Key,重新从{CK0……CK127}开始构造第一个待增强子矩阵,并且使用随机数{T256……T510}构造第一个Toeplitz子矩阵:
之后重复3~9步,计算完成第三组128bits的Final Key;
……
第12步,依次类推,不断计算出各分组128bits的Final Key,直到最后第m/128组128bits的Final Key计算完毕,总共得到压缩后的m/128*128=mbits的Final Key。
可见,通过采用矩阵分块的方法,将上述示例中51200行256000列的随机矩阵Tm*N分割成400x 2000个128行128列的随机子矩阵,将256000bits的Corrected Key构造的256000行1列的待增强矩阵(CK)N*1分割成2000个128行1列的待增强子矩阵,每次子矩阵相乘通过FPGA的并行运算使用1个时钟周期实现,总共只需要400x 2000=800K个时钟周期即可计算完成;从最终运行情况来看,当待保密增强数据Corrected Key为256kbits、保密增强因子设为0.2时,采用矩阵分块的计算方法,可以在8ms计算完成,大大提高了计算速度。而如果不采用矩阵分块运算,而将Tm*N与(CK)N*1进行逐一bit的计算,单个128x 128子矩阵需要16384个时钟周期计算,即使100MHz时钟,也不能在1s内处理完成,计算速度较慢。
综上,本申请提供的对数据进行保密增强的方法,需要获取待保密增强数据Corrected Key的N个数据位,这N个数据位可以构造一个N行1列的待保密增强矩阵;获取m+N-1个随机数,这m+N-1个随机数可以构造一个m行N列的Toeplitz矩阵;通过构造所述待保密增强矩阵的待增强子矩阵、以及构造所述Toeplitz矩阵的随机子矩阵,并对这些子矩阵进行拼接运算,最终获取所述Toeplitz矩阵与所述待增强矩阵相乘后的m行1列矩阵,该m行1列矩阵的矩阵数据即为对所述待保密增强数据进行保密增强后的密钥数据,即FinalKey。可见,本申请使用属于Toeplitz矩阵的随机子矩阵对待保密增强数据进行压缩处理,与现有技术相比,可以降低保密增强后得到的密钥数据的碰撞率,从而提高了密钥数据的随机性,进而提高了密钥数据的安全性。
参见图5,为本申请实施例提供的一种量子密钥分发终端的组成示意图,该量子密钥分发终端包括:
数据位数确定单元501,用于确定待保密增强数据的数据位数N,并确定对所述待保密增强数据进行保密增强后的数据位数m,m小于N;
随机数获取单元502,用于获取m+N-1个随机数;
增强数据获取单元503,用于对属于随机矩阵的至少两个随机子矩阵以及属于待增强矩阵的至少两个待增强子矩阵进行处理,以获取所述随机矩阵与所述待增强矩阵相乘后的矩阵数据,所述矩阵数据是对所述待保密增强数据进行保密增强后的数据;其中,所述随机矩阵是由所述m+N-1个随机数构成的m行N列的Toeplitz矩阵,所述待增强矩阵是由所述待保密增强数据的N个数据位构成的N行1列矩阵。
在本申请的一种实施方式中,所述增强数据获取单元503可以包括:
数据存储子单元,用于将所述待保密增强数据的N位数据进行顺序存储,以及将所述m+N-1个随机数进行顺序存储;其中,当读取数据时,从所述待保密增强数据的第1位数据开始按照存储顺序进行读取,从第i*P+1个随机数开始按照存储顺序进行读取,i=0,1……(m/P)-1,P小于m和N;
矩阵运算子单元,用于预先读取P位随机数,接下来按照下述方式完成第i轮子矩阵运算操作:读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵;从所述待保密增强数据中读取P位数据,构造P行1列的待增强子矩阵;将所述随机子矩阵与所述待增强子矩阵相乘;将本次的子矩阵相乘结果与上一次的子矩阵相乘结果进行异或运算,获取包括P位数据的运算结果;循环执行所述读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵,直到所述待保密增强数据的全部数据位被读取完为止;
数据获取子单元,用于获取以上m/P轮所述子矩阵运算操作的运算结果,得到m位数据。
在本申请的一种实施方式中,所述数据存储子单元,具体用于将所述m+N-1个随机数顺序存储在第一RAM中,并将所述待保密增强数据的N位数据顺序存储在第二RAM中;
则,所述矩阵运算子单元,具体用于在当前时钟周期内,从所述第一RAM中读取本次子矩阵相乘操作所需的P个随机数,并从所述第二RAM中读取本次子矩阵相乘操作所需的P位数据,同时对上一时钟周期读取的数据进行子矩阵相乘操作。
在本申请的一种实施方式中,所述矩阵运算子单元,具体用于利用计算芯片完成所述第i轮子矩阵运算操作,所述计算芯片为现场可编程门阵列FPGA、或数字信号处理器DSP、或高级精简指令集计算机ARM、或中央处理器CPU。
在本申请的一种实施方式中,所述m+N-1个随机数是通过数据完整性认证后的m+N-1个真随机数;或者,所述m+N-1个随机数是利用基于线性反馈移位寄存器LFSR的伪随机序列发生器生成的m+N-1个伪随机数。
在本申请的一种实施方式中,所述数据完整性认证的认证方法采用了HMAC-SM3算法。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本申请各个实施例或者实施例的某些部分所述的方法。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的量子密钥分发终端而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种对数据进行保密增强的方法,其特征在于,包括:
确定待保密增强数据的数据位数N;
确定对所述待保密增强数据进行保密增强后的数据位数m,m小于N;
获取m+N-1个随机数;
对属于随机矩阵的至少两个随机子矩阵以及属于待增强矩阵的至少两个待增强子矩阵进行处理,以获取所述随机矩阵与所述待增强矩阵相乘后的矩阵数据,所述矩阵数据是对所述待保密增强数据进行保密增强后的数据;
其中,所述随机矩阵是由所述m+N-1个随机数构成的m行N列的Toeplitz矩阵,所述待增强矩阵是由所述待保密增强数据的N个数据位构成的N行1列矩阵;
所述对属于随机矩阵的至少两个随机子矩阵以及属于待增强矩阵的至少两个待增强子矩阵进行处理,以获取所述随机矩阵与所述待增强矩阵相乘后的矩阵数据,包括:
将所述待保密增强数据的N位数据进行顺序存储,以及将所述m+N-1个随机数进行顺序存储;其中,当读取数据时,从所述待保密增强数据的第1位数据开始按照存储顺序进行读取,从第i*P+1个随机数开始按照存储顺序进行读取,i=0,1……(m/P)-1,P小于m和N;
预先读取P位随机数,接下来按照下述方式完成第i轮子矩阵运算操作:
读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵;从所述待保密增强数据中读取P位数据,构造P行1列的待增强子矩阵;将所述随机子矩阵与所述待增强子矩阵相乘;将本次的子矩阵相乘结果与上一次的子矩阵相乘结果进行异或运算,获取包括P位数据的运算结果;循环执行所述读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵,直到所述待保密增强数据的全部数据位被读取完为止;
获取以上m/P轮所述子矩阵运算操作的运算结果,得到m位数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述待保密增强数据的N位数据进行顺序存储,以及将所述m+N-1个随机数进行顺序存储,包括:
将所述m+N-1个随机数顺序存储在第一RAM中,并将所述待保密增强数据的N位数据顺序存储在第二RAM中;
则,在所述子矩阵运算操作中:
在当前时钟周期内,从所述第一RAM中读取本次子矩阵相乘操作所需的P个随机数,并从所述第二RAM中读取本次子矩阵相乘操作所需的P位数据,同时对上一时钟周期读取的数据进行子矩阵相乘操作。
3.根据权利要求1所述的方法,其特征在于,
利用计算芯片完成所述第i轮子矩阵运算操作,所述计算芯片为现场可编程门阵列FPGA、或数字信号处理器DSP、或高级精简指令集计算机ARM、或中央处理器CPU。
4.根据权利要求1至3任一项所述的方法,其特征在于,
所述m+N-1个随机数是通过数据完整性认证后的m+N-1个真随机数;
或者,所述m+N-1个随机数是利用基于线性反馈移位寄存器LFSR的伪随机序列发生器生成的m+N-1个伪随机数。
5.根据权利要求4所述的方法,其特征在于,
所述数据完整性认证的认证方法采用了HMAC-SM3算法。
6.一种量子密钥分发终端,其特征在于,包括:
数据位数确定单元,用于确定待保密增强数据的数据位数N,并确定对所述待保密增强数据进行保密增强后的数据位数m,m小于N;
随机数获取单元,用于获取m+N-1个随机数;
增强数据获取单元,用于对属于随机矩阵的至少两个随机子矩阵以及属于待增强矩阵的至少两个待增强子矩阵进行处理,以获取所述随机矩阵与所述待增强矩阵相乘后的矩阵数据,所述矩阵数据是对所述待保密增强数据进行保密增强后的数据;其中,所述随机矩阵是由所述m+N-1个随机数构成的m行N列的Toeplitz矩阵,所述待增强矩阵是由所述待保密增强数据的N个数据位构成的N行1列矩阵;
所述增强数据获取单元包括:
数据存储子单元,用于将所述待保密增强数据的N位数据进行顺序存储,以及将所述m+N-1个随机数进行顺序存储;其中,当读取数据时,从所述待保密增强数据的第1位数据开始按照存储顺序进行读取,从第i*P+1个随机数开始按照存储顺序进行读取,i=0,1……(m/P)-1,P小于m和N;
矩阵运算子单元,用于预先读取P位随机数,接下来按照下述方式完成第i轮子矩阵运算操作:读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵;从所述待保密增强数据中读取P位数据,构造P行1列的待增强子矩阵;将所述随机子矩阵与所述待增强子矩阵相乘;将本次的子矩阵相乘结果与上一次的子矩阵相乘结果进行异或运算,获取包括P位数据的运算结果;循环执行所述读取P位随机数并与上一次读取的P位随机数构造P行P列的随机子矩阵,直到所述待保密增强数据的全部数据位被读取完为止;
数据获取子单元,用于获取以上m/P轮所述子矩阵运算操作的运算结果,得到m位数据。
7.根据权利要求6所述的量子密钥分发终端,其特征在于,所述数据存储子单元,具体用于将所述m+N-1个随机数顺序存储在第一RAM中,并将所述待保密增强数据的N位数据顺序存储在第二RAM中;
则,所述矩阵运算子单元,具体用于在当前时钟周期内,从所述第一RAM中读取本次子矩阵相乘操作所需的P个随机数,并从所述第二RAM中读取本次子矩阵相乘操作所需的P位数据,同时对上一时钟周期读取的数据进行子矩阵相乘操作。
8.根据权利要求6至7任一项所述的量子密钥分发终端,其特征在于,
所述m+N-1个随机数是通过数据完整性认证后的m+N-1个真随机数;
或者,所述m+N-1个随机数是利用基于线性反馈移位寄存器LFSR的伪随机序列发生器生成的m+N-1个伪随机数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710581985.5A CN109274484B (zh) | 2017-07-17 | 2017-07-17 | 一种对数据进行保密增强的方法及量子密钥分发终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710581985.5A CN109274484B (zh) | 2017-07-17 | 2017-07-17 | 一种对数据进行保密增强的方法及量子密钥分发终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109274484A CN109274484A (zh) | 2019-01-25 |
CN109274484B true CN109274484B (zh) | 2019-08-02 |
Family
ID=65147807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710581985.5A Active CN109274484B (zh) | 2017-07-17 | 2017-07-17 | 一种对数据进行保密增强的方法及量子密钥分发终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109274484B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995362B (zh) * | 2019-12-06 | 2021-06-08 | 西安电子科技大学 | 使用软核处理器的mdi-qkd的编码系统及方法 |
CN111027623A (zh) * | 2019-12-10 | 2020-04-17 | 深圳供电局有限公司 | 数据增强的智能终端安全等级分类方法及系统 |
CN112910933B (zh) * | 2021-05-07 | 2021-07-13 | 鹏城实验室 | 认证方法、认证设备以及验证设备 |
CN113271208B (zh) * | 2021-05-25 | 2022-11-08 | 哈尔滨工业大学 | 基于多线性模数哈希函数的保密增强方法及装置 |
CN113835679B (zh) * | 2021-09-30 | 2023-09-29 | 海宁奕斯伟集成电路设计有限公司 | 一种随机数的生成方法、装置及系统 |
CN114531229B (zh) * | 2021-12-31 | 2023-09-01 | 华南师范大学 | 一种用于多自由度调制qkd的保密增强方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102447558A (zh) * | 2011-11-22 | 2012-05-09 | 王勇 | 按需取用随机序列的具有误导功能的加密方法 |
CN104270247A (zh) * | 2014-05-23 | 2015-01-07 | 中国人民解放军信息工程大学 | 适用于量子密码系统的高效泛Hash函数认证方案 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9471280B2 (en) * | 2014-01-14 | 2016-10-18 | The Regents Of The University Of Michigan | Extraction of random numbers from physical systems |
-
2017
- 2017-07-17 CN CN201710581985.5A patent/CN109274484B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102447558A (zh) * | 2011-11-22 | 2012-05-09 | 王勇 | 按需取用随机序列的具有误导功能的加密方法 |
CN104270247A (zh) * | 2014-05-23 | 2015-01-07 | 中国人民解放军信息工程大学 | 适用于量子密码系统的高效泛Hash函数认证方案 |
Also Published As
Publication number | Publication date |
---|---|
CN109274484A (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109274484B (zh) | 一种对数据进行保密增强的方法及量子密钥分发终端 | |
CN104270247B (zh) | 适用于量子密码系统的高效泛Hash函数认证方法 | |
Delvaux et al. | A survey on lightweight entity authentication with strong PUFs | |
Bösch et al. | Efficient helper data key extractor on FPGAs | |
AU2014253868B2 (en) | System and methods for encrypting data | |
CN108964872B (zh) | 一种基于aes的加密方法及装置 | |
CN107690681B (zh) | 用于集成电路数据路径保密性及其扩展的技术 | |
WO2002051126A2 (en) | Method and system for trusted digital camera | |
CN109274485A (zh) | 一种数据加密方法、数据认证方法及相关设备和系统 | |
CN102012993A (zh) | 一种数据选择加密解密方法及装置 | |
US11296869B2 (en) | Apparatus and method for unbreakable data encryption | |
KR100800468B1 (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
CN108833117B (zh) | 一种私钥存储和读取方法、装置及硬件设备 | |
Dey | An image encryption method: SD-advanced image encryption standard: SD-AIES | |
Sarkar et al. | Role of cryptography in network security | |
CN109714368A (zh) | 报文加解密方法、装置、电子设备及计算机可读存储介质 | |
CN113268762B (zh) | 一种基于lfsr哈希的无条件安全认证方法 | |
CN103049242A (zh) | 数字式真随机数发生器电路 | |
CN101582170B (zh) | 一种基于椭圆曲线密码体制的遥感图像加密方法 | |
CN108650072A (zh) | 一种支持多种对称密码算法芯片及其抗攻击电路实现方法 | |
CN109743156A (zh) | 一种分组加解密方法和装置 | |
Chhabra et al. | Hardware Obfuscation of AES IP Core Using PUFs and PRNG: A Secure Cryptographic Key Generation Solution for Internet-of-Things Applications | |
Suri et al. | 3D Array Block Rotation Cipher: An Improvement using shift | |
Kothandan | Modified Blowfish Algorithm to Enhance its Performance and Security | |
CN110071927A (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 |