CN109274480B - 基于hmac-sm3算法的数据认证方法及量子密钥分发系统 - Google Patents

基于hmac-sm3算法的数据认证方法及量子密钥分发系统 Download PDF

Info

Publication number
CN109274480B
CN109274480B CN201710581983.6A CN201710581983A CN109274480B CN 109274480 B CN109274480 B CN 109274480B CN 201710581983 A CN201710581983 A CN 201710581983A CN 109274480 B CN109274480 B CN 109274480B
Authority
CN
China
Prior art keywords
data
qkd
terminal
certified
qkd terminal
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
CN201710581983.6A
Other languages
English (en)
Other versions
CN109274480A (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.)
Anhui Quantum Communication Technology Co Ltd
Original Assignee
Anhui Quantum Communication Technology Co Ltd
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 Anhui Quantum Communication Technology Co Ltd filed Critical Anhui Quantum Communication Technology Co Ltd
Priority to CN201710581983.6A priority Critical patent/CN109274480B/zh
Publication of CN109274480A publication Critical patent/CN109274480A/zh
Application granted granted Critical
Publication of CN109274480B publication Critical patent/CN109274480B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0852Quantum cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Electromagnetism (AREA)
  • Theoretical Computer Science (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种基于HMAC‑SM3算法的数据认证方法及量子密钥分发系统,对于通过经典网络进行通信的两个量子密钥分发QKD终端,这两个QKD终端均利用相同密钥采用HMAC‑SM3算法对同一时段内的终端交互数据进行哈希运算,以分别得到一个哈希值,其中,终端交互数据包括两个QKD终端分别向对端发送的数据;如果该终端交互数据在通过经典网络时未被篡改,则两个QKD终端各自从对端得到的哈希值与自己计算的哈希值是相同的。本申请采用HMAC‑SM3算法得到的哈希值具有更高的安全性,在传输过程中不易被破解,提高了数据完整性认证的准确性。

Description

基于HMAC-SM3算法的数据认证方法及量子密钥分发系统
技术领域
本申请涉及量子密钥分发技术领域,尤其涉及一种基于HMAC-SM3算法的数据认证方法及量子密钥分发系统。
背景技术
量子密钥分发(Quantum Key Distribution,简称QKD)与经典密钥体系的根本不同在于,其采用光子的不同量子态作为密钥的载体,由量子力学的基本原理保证了该过程的不可窃听、不可破译性,从而提供了一种更为安全的密钥体系。
在QKD系统的具体实现中,要保证它的安全性需要考虑各种可能的攻击,一种可能的攻击就是中间人攻击,具体地,当窃听者Eve拥有整个可以完成QKD协议的设备时,对于合法通信双方,即QKD终端Alice和Bob,窃听者Eve可以截断Alice发给Bob的通讯信息,并且冒充自己是Bob,并在自己和Alice之间建立起一个共享密钥,同时,Eve也可以截断Bob发给Alice的通讯信息,在自己和Bob之间建立起另外一个共享密钥,这样,Alice与Bob之间的通讯信息,就可以被Eve窃取并篡改了。
为了防止中间人攻击,现有的QKD数据认证算法有CRC32(32位循环冗余校验)校验算法,采用该算法对经典网络交互数据进行CRC计算,得到32bits校验值,Alice、Bob双方通过比对交互数据的CRC校验值来确定交互数据是否被篡改。但是,采用CRC算法进行校验的方法,CRC校验值的碰撞概率较高,因此,窃听者容易伪造交互数据使得CRC校验通过,不能起到很好的数据完整性验证功能。经实验验证,使用随机生成数据计算CRC校验值并统计,发现1820万个数据,冲突数量已达到38638,不能满足QKD终端数据认证的需求。
发明内容
有鉴于此,本申请的主要目的在于提供一种基于HMAC-SM3算法的数据认证方法及量子密钥分发系统,能够提高数据完整性认证的准确性。
第一方面,本申请提供了一种基于HMAC-SM3算法的数据认证方法,所述方法应用于一种量子密钥分发QKD系统,所述QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端,所述方法包括:
所述第一QKD终端利用第一密钥对第一待认证数据进行HMAC-SM3运算,得到第一哈希值;利用第二密钥对所述第一哈希值进行加密,将得到的第一密文发送至所述第二QKD终端;其中,所述第一待认证数据包括预设时段内所述第一QKD终端向所述第二QKD终端发送的数据、以及所述预设时段内所述第一QKD终端从所述第二QKD终端接收的数据;
所述第二QKD终端利用所述第一密钥对第二待认证数据进行HMAC-SM3运算,得到第二哈希值;利用与所述第二密钥不同的第三密钥对所述第二哈希值进行加密,将得到的第二密文发送至所述第一QKD终端;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端向所述第一QKD终端发送的数据、以及所述预设时段内所述第二QKD终端从所述第一QKD终端接收的数据;
所述第一QKD终端利用所述第三密钥对所述第二密文进行解密;判断解密后的哈希值与所述第一哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端利用所述第二密钥对所述第一密文进行解密;判断解密后的哈希值与所述第二哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
第二方面,本申请提供了一种基于HMAC-SM3算法的数据认证方法,所述方法应用于一种量子密钥分发QKD系统,所述QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端,所述方法包括:
所述第一QKD终端利用第四密钥对第一待认证数据进行HMAC-SM3运算,得到第三哈希值;利用第五密钥对所述第一待认证数据进行HMAC-SM3运算,得到第四哈希值;将所述第四哈希值发送至所述第二QKD终端;其中,所述第四密钥与所述第五密钥为不同的密钥,所述第一待认证数据包括预设时段内所述第一QKD终端向所述第二QKD终端发送的数据、以及所述预设时段内所述第一QKD终端从所述第二QKD终端接收的数据;
所述第二QKD终端利用所述第四密钥对第二待认证数据进行HMAC-SM3运算,得到第五哈希值;利用所述第五密钥对所述第二待认证数据进行HMAC-SM3运算,得到第六哈希值;将所述第五哈希值发送至所述第一QKD终端;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端向所述第一QKD终端发送的数据、以及所述预设时段内所述第二QKD终端从所述第一QKD终端接收的数据;
所述第一QKD终端判断所述第三哈希值与所述第五哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端判断所述四哈希值与所述第六哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
第三方面,本申请提供了一种量子密钥分发系统,所述量子密钥分发QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端;
所述第一QKD终端,用于利用第一密钥对第一待认证数据进行HMAC-SM3运算,得到第一哈希值;利用第二密钥对所述第一哈希值进行加密,将得到的第一密文发送至所述第二QKD终端;其中,所述第一待认证数据包括预设时段内所述第一QKD终端向所述第二QKD终端发送的数据、以及所述预设时段内所述第一QKD终端从所述第二QKD终端接收的数据;
所述第二QKD终端,用于利用所述第一密钥对第二待认证数据进行HMAC-SM3运算,得到第二哈希值;利用与所述第二密钥不同的第三密钥对所述第二哈希值进行加密,将得到的第二密文发送至所述第一QKD终端;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端向所述第一QKD终端发送的数据、以及所述预设时段内所述第二QKD终端从所述第一QKD终端接收的数据;
所述第一QKD终端,还用于利用所述第三密钥对所述第二密文进行解密;判断解密后的哈希值与所述第一哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端,还用于利用所述第二密钥对所述第一密文进行解密;判断解密后的哈希值与所述第二哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
第四方面,本申请提供了一种量子密钥分发系统,所述量子密钥分发QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端;
所述第一QKD终端,用于利用第四密钥对第一待认证数据进行HMAC-SM3运算,得到第三哈希值;利用第五密钥对所述第一待认证数据进行HMAC-SM3运算,得到第四哈希值;将所述第四哈希值发送至所述第二QKD终端;其中,所述第四密钥与所述第五密钥为不同的密钥,所述第一待认证数据包括预设时段内所述第一QKD终端向所述第二QKD终端发送的数据、以及所述预设时段内所述第一QKD终端从所述第二QKD终端接收的数据;
所述第二QKD终端,用于利用所述第四密钥对第二待认证数据进行HMAC-SM3运算,得到第五哈希值;利用所述第五密钥对所述第二待认证数据进行HMAC-SM3运算,得到第六哈希值;将所述第五哈希值发送至所述第一QKD终端;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端向所述第一QKD终端发送的数据、以及所述预设时段内所述第二QKD终端从所述第一QKD终端接收的数据;
所述第一QKD终端,还用于判断所述第三哈希值与所述第五哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端,还用于判断所述四哈希值与所述第六哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
本申请提供了一种基于HMAC-SM3算法的数据认证方法及量子密钥分发系统,对于通过经典网络进行通信的两个量子密钥分发QKD终端,这两个QKD终端均利用相同密钥采用HMAC-SM3算法对同一时段内的终端交互数据进行哈希运算,以分别得到一个哈希值,其中,终端交互数据包括两个QKD终端分别向对端发送的数据;如果该终端交互数据在通过经典网络时未被篡改,则两个QKD终端各自从对端得到的哈希值与自己计算的哈希值是相同的,从而说明两个QKD终端各自获取的终端交互数据是相同的,进而说明该终端交互数据在传输过程中未被篡改。相比于现有技术,本申请采用HMAC-SM3算法得到的哈希值具有更高的安全性,在传输过程中不易被破解,因此提高了数据完整性认证的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的量子密钥分发系统示意图;
图2为本申请实施例提供的HMAC-SM3算法的运算过程示意图;
图3为本申请实施例提供的一种基于HMAC-SM3算法的数据认证方法的流程示意图;
图4为本申请实施例提供的另一种基于HMAC-SM3算法的数据认证方法的流程示意图;
图5为本申请实施例一种量子密钥分发系统的组成示意图;
图6为本申请实施例另一种量子密钥分发系统的组成示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示的量子密钥分发系统示意图,量子密钥分发(Quantum KeyDistribution,简称QKD)系统中的两个QKD终端Alice和Bob,用于生成相同的量子密钥。具体地,Alice通过量子信道将原始密钥数据发送给Bob,之后,Alice和Bob使用经典信道进行通信,从原始密钥数据中提取基矢一致的数据以完成数据筛选,得到筛选后密钥SiftedKey,再使用纠错算法,将两端有一定错误的Sifted Key协商达到一致,得到纠错后密钥Corrected Key,最后根据评估的压缩比例对Corrected Key进行保密增强,得到最终密钥Final Key并输出。
现有的QKD数据认证算法有CRC校验算法,但由于CRC校验值的碰撞概率较高,因此,若采用CRC算法进行校验,窃听者容易伪造交互数据使得CRC校验通过,不能起到很好的数据完备性验证功能。
故此,本申请实施例提出了一种基于HMAC-SM3算法的数据认证方法及量子密钥分发系统,以希望通过采用HMAC-SM3算法得到的哈希值具有更高的安全性,在传输过程中不容易被破解,从而提高数据完整性认证的准确性。
本申请实施例中引入了HMAC-SM3算法,为便于理解HMAC-SM3算法的具体运算过程,现结合图2进行说明。
参见图2所示的HMAC-SM3算法的运算过程示意图。图2中的HMAC-SM3算法的算法公式为其中:
H()代表所采用的Hash算法,这里使用SM3算法,括号内“∣”代表数据拼接;
K代表认证密码,⊕表示异或操作;
M(Y0~YL-1)代表输入的待认证数据,每个Y的长度为b bits,但YL-1不一定要求是完整的b bits的分组长度;
b代表H中所处理的块长度,该块长度是以bit为单位的分组长度,SM3算法输入分组长度b=512bits=64Byte;
L表示M按照512bits分组的总分组数;
字符串opad为使用B个0x5c组成的字符串,该字符串opad的总长度为512bits;
字符串ipad为使用B个0x36组成的字符串,该字符串ipad的总长度为512bits;
B代表H中所处理的块长度,该块长度为以Byte为单位的分组长度,B=64Byte=512bits。
具体地,HMAC-SM3算法的运算过程为:
步骤1:在密钥K后面通过添加bit0,来创建一个长度为512bits的字符串K+
步骤2:将步骤1生成的字符串K+与字符串ipad做按位异或运算,生成字符串Si,该字符串Si长度为512bits;
步骤3:将待认证数据M(Y0~YL-1)拼接至步骤2生成的字符串Si末尾,形成一新数据M1。
步骤4:使用SM3算法对步骤3生成的新数据M1进行运算,计算得到一Hash值Hi,Hi的长度为256bits;
步骤5:将步骤1生成的字符串K+与字符串opad做按位异或运算,生成字符串So,该字符串So长度为512bits;
步骤6:将步骤4生成的字符串Hi拼接至步骤5生成的字符串So后面,形成一新的待认证字符串;
步骤7:使用SM3算法对步骤6生成的待认证字符串进行运算,计算得到一Hash值,其长度为256bits。
由于采用HMAC-SM3算法对同一时间段内的两个QKD设备之间的交互数据进行哈希运算,得到的哈希值具有更高的安全性,这样,在传输过程中不易被破解,从而提高了数据完整性认证的准确性。
实施例一
参见图3,为本申请实施例提供的一种基于HMAC-SM3算法的数据认证方法的流程示意图,该数据认证方法应用于一种QKD系统,该QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端,其中,第一QKD终端为图1所示的Alice,第二QKD终端为图1所示的Bob。
由于第一QKD终端和第二QKD终端各自对应一量子密钥管理终端,其可以预先为对应QKD终端分配三个不同的密钥数据,分别是第一密钥、第二密钥和第三密钥。
该数据认证方法包括以下步骤:
S301:所述第一QKD终端利用第一密钥对第一待认证数据进行HMAC-SM3运算,得到第一哈希值;利用第二密钥对所述第一哈希值进行加密,将得到的第一密文发送至所述第二QKD终端。
在本实施例中,所述第一待认证数据包括预设时段内第一QKD终端向第二QKD终端发送的数据A,以及所述预设时段内第一QKD终端从第二QKD终端接收的数据B。其中,在所述第一待认证数据中,关于第一QKD终端从第二QKD终端接收的数据B,其是通过经典信道进行传输的、且在传输过程中存在被篡改的风险,因此,该数据B可能是被篡改过的数据也可能是未被篡改过的数据。
在本步骤中,可以按照图2所示流程进行HMAC-SM3运算得到第一哈希值,HMAC-SM3运算中的密钥K即为所述第一密钥。
本实施例中,利用第二密钥对第一哈希值进行加密时,可以采用对称加密算法进行加密,即,对第一哈希值的加密和解密均采用第二密钥。
S302:所述第二QKD终端利用所述第一密钥对第二待认证数据进行HMAC-SM3运算,得到第二哈希值;利用与所述第二密钥不同的第三密钥对所述第二哈希值进行加密,将得到的第二密文发送至所述第一QKD终端。
在本实施例中,所述第二待认证数据包括所述预设时段内第二QKD终端向第一QKD终端发送的数据B、以及所述预设时段内第二QKD终端从第一QKD终端接收的数据A。其中,在所述第二待认证数据中,关于第二QKD终端从第一QKD终端接收的数据A,其是通过经典信道进行传输的、且在传输过程中存在被篡改的风险,因此,该数据A可能是被篡改过的数据也可能是未被篡改过的数据。
在本步骤中,可以按照图2所示流程进行HMAC-SM3运算得到第二哈希值,HMAC-SM3运算中的密钥K即为所述第一密钥。
本实施例中,利用第三密钥对第二哈希值进行加密时,可以采用对称加密算法进行加密,即,对第二哈希值的加密和解密均采用第三密钥。
在S301和S302中,第一待认证数据和第二待认证数据可以是QKD系统在基矢对比阶段或其它阶段的经典网络交互数据,可以将固定的数据交互时长比如1秒,作为所述预设时段,以对每秒内的交互数据进行数据完整性验证。
可以理解的是,如果第一QKD终端与第二QKD终端的交互数据在经过经典信道传输时没被篡改,则第一待认证数据与第二待认证数据为相同数据;反之,如果第一QKD终端与第二QKD终端的交互数据在经过经典信道传输时被篡改,则第一待认证数据与第二待认证数据可能为不同数据。
S303:所述第一QKD终端利用所述第三密钥对所述第二密文进行解密;判断解密后的哈希值与所述第一哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改。
在本步骤中,第一QKD终端需要对从第二QKD终端接收的第二密文进行解密,并将解密得到的哈希值与本端的第一哈希值进行对比,由于解密得到的哈希值和第一哈希值都是采用第一密钥进行加密的结果,如果解密得到的哈希值与本端的第一哈希值相同,则第一QKD终端认为本端的第一待认证数据没有被篡改过,即认证通过,反之,则认证不通过。
S304:所述第二QKD终端利用所述第二密钥对所述第一密文进行解密;判断解密后的哈希值与所述第二哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
在本步骤中,第二QKD终端需要对从第一QKD终端接收的第一密文进行解密,并将解密得到的哈希值与本端的第二哈希值进行对比,由于解密得到的哈希值和第二哈希值都是采用第一密钥进行加密的结果,如果解密得到的哈希值与本端的第二哈希值相同,则第二QKD终端认为本端的第二待认证数据没有被篡改过,即认证通过,反之,则认证不通过。
步骤S303与S304实现了双向数据认证,即,两个QKD终端分别根据本端的加密运算结果与对端的加密运算结果,判断本端的待认证数据是否被篡改,如果两端的待认证数据均未被篡改,说明两个QKD终端的交互数据通过了数据完整性验证,否则,未通过验证。
可见,本申请实施例中,对于通过经典网络进行通信的两个QKD终端,这两个QKD终端均利用相同密钥采用HMAC-SM3算法对同一时段内的终端交互数据进行哈希运算,以分别得到一个哈希值,其中,终端交互数据包括两个QKD终端分别向对端发送的数据;如果该终端交互数据在通过经典网络时未被篡改,则两个QKD终端各自从对端得到的哈希值与自己计算的哈希值是相同的,从而说明两个QKD终端各自获取的终端交互数据是相同的,进而说明该终端交互数据在传输过程中未被篡改。相比于现有技术,本申请采用HMAC-SM3算法得到的哈希值具有更高的安全性,在传输过程中不易被破解,因此提高了数据完整性认证的准确性。
实施例二
参见图4,为本申请实施例提供的另一种基于HMAC-SM3算法的数据认证方法的流程示意图,该数据认证方法应用于一种QKD系统,该QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端,其中,第一QKD终端为图1所示的Alice,第二QKD终端为图1所示的Bob。
由于第一QKD终端和第二QKD终端各自对应一量子密钥管理终端,其可以预先为对应QKD终端分配两个不同的密钥数据,分别是第四密钥和第五密钥。
该数据认证方法包括以下步骤:
S401:第一QKD终端利用第四密钥对第一待认证数据进行HMAC-SM3运算,得到第三哈希值;利用第五密钥对所述第一待认证数据进行HMAC-SM3运算,得到第四哈希值;将所述第四哈希值发送至所述第二QKD终端。
本实施例中,第四密钥与第五密钥为不同的密钥。
在本实施例中,所述第一待认证数据包括预设时段内第一QKD终端向第二QKD终端发送的数据A,以及所述预设时段内第一QKD终端从第二QKD终端接收的数据B。其中,在所述第一待认证数据中,关于第一QKD终端从第二QKD终端接收的数据B,其是通过经典信道进行传输的、且在传输过程中存在被篡改的风险,因此,该数据B可能是被篡改过的数据也可能是未被篡改过的数据。
在本步骤中,可以按照图2所示流程进行HMAC-SM3运算得到第三哈希值,该HMAC-SM3运算中的密钥K即为所述第四密钥;同样可以按照图2所示流程进行HMAC-SM3运算得到第四哈希值,该HMAC-SM3运算中的密钥K即为所述第五密钥。
S402:所述第二QKD终端利用所述第四密钥对第二待认证数据进行HMAC-SM3运算,得到第五哈希值;利用所述第五密钥对所述第二待认证数据进行HMAC-SM3运算,得到第六哈希值;将所述第五哈希值发送至所述第一QKD终端。
在本实施例中,所述第二待认证数据包括所述预设时段内第二QKD终端向第一QKD终端发送的数据B、以及所述预设时段内第二QKD终端从第一QKD终端接收的数据A。其中,在所述第二待认证数据中,关于第二QKD终端从第一QKD终端接收的数据A,其是通过经典信道进行传输的、且在传输过程中存在被篡改的风险,因此,该数据A可能是被篡改过的数据也可能是未被篡改过的数据。
在本步骤中,可以按照图2所示流程进行HMAC-SM3运算得到第五哈希值,该HMAC-SM3运算中的密钥K即为所述第四密钥;同样可以按照图2所示流程进行HMAC-SM3运算得到第六哈希值,该HMAC-SM3运算中的密钥K即为所述第五密钥。
在S401和S402中,第一待认证数据和第二待认证数据可以是QKD系统在基矢对比阶段或其它阶段的经典网络交互数据,可以将固定的数据交互时长比如1秒,作为所述预设时段,以对每秒内的交互数据进行数据完整性验证。
可以理解的是,如果第一QKD终端与第二QKD终端的交互数据在经过经典信道传输时没被篡改,则第一待认证数据与第二待认证数据为相同数据;反之,如果第一QKD终端与第二QKD终端的交互数据在经过经典信道传输时被篡改,则第一待认证数据与第二待认证数据为不同数据。
S403:所述第一QKD终端判断所述第三哈希值与所述第五哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改。
在本步骤中,第一QKD终端从第二QKD终端接收第五哈希值后,与本端的第三哈希值进行对比,由于第三哈希值和第五哈希值都是采用第四密钥进行加密的结果,如果二者相同,则第一QKD终端认为本端的第一待认证数据没有被篡改过,即认证通过,反之,则认证不通过。
S404:所述第二QKD终端判断所述四哈希值与所述第六哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
在本步骤中,第二QKD终端从第一QKD终端接收第四哈希值后,与本端的第六哈希值进行对比,由于第四哈希值和第六哈希值都是采用第五密钥进行加密的结果,如果二者相同,则第二QKD终端认为本端的第二待认证数据没有被篡改过,即认证通过,反之,则认证不通过。
步骤S403与S404实现了双向数据认证,即,两个QKD终端分别根据本端的加密运算结果与对端的加密运算结果,判断本端的待认证数据是否被篡改,如果两端的待认证数据均未被篡改,说明两个QKD终端的交互数据通过了数据完整性验证,否则,未通过验证。
可见,本申请实施例中,对于通过经典网络进行通信的两个量子密钥分发QKD终端,这两个QKD终端均利用相同密钥采用HMAC-SM3算法对同一时段内的终端交互数据进行哈希运算,以分别得到一个哈希值,其中,终端交互数据包括两个QKD终端分别向对端发送的数据;如果该终端交互数据在通过经典网络时未被篡改,则两个QKD终端各自从对端得到的哈希值与自己计算的哈希值是相同的,从而说明两个QKD终端各自获取的终端交互数据是相同的,进而说明该终端交互数据在传输过程中未被篡改。相比于现有技术,本申请采用HMAC-SM3算法得到的哈希值具有更高的安全性,在传输过程中不易被破解,因此提高了数据完整性认证的准确性。
另外,在本申请的一种实施方式中,S301、S302中的第一密钥以及S401、S402中的第四密钥和第五密钥,可以是从密钥缓存区中未被使用过的密钥数据中提取的,其中,所述密钥缓存区中存储了预先分配的密钥数据以及QKD系统输出的量子密钥数据。在本实施方式中,如图1所示,Alice对应一量子密钥管理终端A,其预先为Alice分配数量足够的密钥数据,并将这些密钥数据预先存储在Alice的密钥缓存区中,同样地,Bob也对应一量子密钥管理终端B,其预先为Bob分配数量足够的密钥数据,并将这些密钥数据预先存储在Bob的密钥缓存区中,这些密钥数据与预先分配给Alice的密钥数据相同;此外,Alice与Bob还将每次生成的两端一致的量子密钥,也存储在自己的密钥缓存区中,以不断更新自己的密钥缓存区;这样,当Alice与Bob为实现数据完整性验证而对各自的待认证数据进行HMAC-SM3运算时,可以从各自的密钥缓存区中读取相同的密钥数据。
进一步地,为防止伪造设备接入图1所示QKD系统,在本申请的一种实施方式中,所述第一待认证数据还可以包括:所述第一QKD终端从所述第二QKD终端接收的终端标识信息;所述第二待认证数据还包括:所述第二QKD终端从所述第一QKD终端接收的终端标识信息;其中,所述终端标识信息包括所述第一QKD终端和所述第二QKD终端的终端标识。
在本实施方式中,当第一QKD终端和第二QKD终端分别为图1所示的Alice和Bob时,Alice对应的量子密钥管理终端预先将Alice和Bob的终端标识发送给Alice,同样的,Bob对应的量子密钥管理终端也预先将Alice和Bob的终端标识发送给Bob,以使Alice和Bob均获取到了本端设备标识和对端设备标识,这样,在Alice或Bob向对端设备发送经典网络交互数据的同时,也向对端设备发送Alice和Bob的设备标识。在这种情况下,如果有伪造设备接入QKD系统并冒充Alice或Bob进行通信,伪造设备需要伪造待认证数据中Alice和Bob的终端标识,如果Alice或Bob确定本侧的待认证数据没有通过认证,则也可能是待认证数据中Alice和/或Bob的终端标识被篡改,这样,就可以识别出有伪造设备接入QKD系统。
在本申请的一种实施方式中,S301、S302以及S401、S402中的“进行HMAC-SM3运算”的步骤可以包括:利用现场可编程门阵列(Field Programmable Gate Array,简称FPGA)进行HMAC-SM3运算。
其中,利用FPGA实现SM3运算,可以使用尽量少的时钟周期实现SM3运算中64轮压缩函数CF的迭代运算,从而加快SM3运算的处理速度。为此,首先介绍SM3算法,SM3算法的运算过程包括填充步骤、迭代压缩步骤以及结果输出步骤,具体而言:
1、填充步骤
在填充步骤中,假设消息m的长度为l比特,首先,将比特“1”添加到消息m的末尾,再添加k个“0”,其中,k是满足条件为l+1+k≡448mod512的最小的非负整数,然后再添加一个64位比特串,该比特串是长度l的二进制表示。最后,填充后的消息m′的长度为512bits的倍数。
例如,消息m为01 100001 01100010 01100011,该消息m的长度为l=24bits,首先,将“1”bits添加到消息m的末尾,再添加423个“0”bits,接着,再添加一个64位比特串,该比特串是l即“24”的二进制表示形式,最后得到填充后的消息m′为
2、迭代压缩步骤
将消息m填充为消息m′后,可以进行迭代压缩步骤,具体地,可以将填充后的消息m′按512bits进行分组:m′=B(0)B(1)…B(n-1),其中,n=(l+k+65)/512。然后,对分组后的消息m′按下列方式迭代:
FOR i=0TO n-1
V(i+1)=CF(V(i),B(i))
ENDFOR
其中,CF是压缩函数,V(0)是长度为256比特的初始值IV,B(i)是填充后的消息分组,迭代压缩的结果为V(n)
接着,将消息分组B(i)按以下方法扩展生成132个字,分别为W0,W1,…,W67,W0′,W1′,…,W′63,用于压缩函数CF,具体地:
步骤a:将消息分组B(i)划分为16个字W0,W1,…,W15
步骤b:FOR j=16TO 67
ENDFOR
步骤c:FOR j=0TO 63
ENDFOR
令A,B,C,D,E,F,G,H为字寄存器,SS1,SS2,TT1,TT2为中间变量,压缩函数V(i+1)=CF(V(i),B(i)),0≤i≤n-1。计算过程具体如下:
ABCDEFGH←V(i)
FOR j=0TO 63
ENDFOR
其中,字的存储为大端(Big-endian)格式。
需要说明的是,上述压缩函数CF的计算过程中,可以将以上每一轮压缩函数CF的计算步骤进行划分,具体地,将每一轮迭代压缩运算中的前四个步骤划分为一部分,将该部分称为中间变量赋值运算,而每一轮迭代压缩运算中的后八个步骤划分为一部分,将该部分称为字寄存器赋值运算。
当第64轮压缩函数CF的迭代运算结束后,第64轮运算输出长度为256bits的向量ABCDEFGH,将其与第63轮运算输出的长度为256bits的向量ABCDEFGH进行异或运算,从而得到迭代压缩的最终结果,该结果的长度为256bits。
3、结果输出步骤
当迭代压缩步骤完成后,开始进行结果输出步骤。需要说明的,迭代压缩步骤得到的最终结果即为SM3Hash运算最终的杂凑结果。具体地,可以按照下列方式进行结果输出:
ABCDEFGH←V(n)
输出256比特的杂凑值y=ABCDEFGH。
需要说明的是,关于上述图2及其相关文字介绍的HMAC-SM3算法,其中的步骤4和步骤7涉及了SM3算法,而步骤4中的新数据M1以及步骤7中的待认证字符串即为上述SM3算法中的消息m。
还需要说明的是,在进行SM3运算时,只要获取到新的消息m,便实时进行填充步骤,并按照填充完成的先后顺序,依次对之前已经完成填充后的消息m′实现后续的迭代压缩步骤及结果输出步骤,这样,可以加快数据处理速度。
基于上述对SM3算法的介绍,SM3算法中的每一轮迭代压缩运算均包括中间变量赋值运算和字寄存器赋值运算。为了使用FPGA运行SM3算法时,可以使用尽量少的时钟周期实现64轮压缩函数CF的迭代运算,本实施例中,“利用FPGA进行HMAC-SM3运算”,有至少如下两种可能的实施方式:
在一种可能的实施方式中,具体可以在同一时钟周期内,利用FPGA对中间变量赋值运算或字寄存器赋值运算进行并行处理。
具体地,在每一轮迭代压缩运算中,中间变量赋值运算完成后,需要将该运算结果放入寄存器中,以便基于寄存器中的运算结果实现字寄存器赋值运算,但是,将数据放入寄存器的过程中会花费一定的时间,导致同一轮迭代压缩运算的中间变量赋值运算与字寄存器赋值运算无法在同一时钟周期内完成。因此,可以将中间变量赋值运算用FPGA的一个时钟周期并行计算完成,将字寄存器赋值运算用FPGA的一个时钟周期并行计算完成,这样,每轮压缩函数CF的迭代运算可以压缩到2个时钟周期完成,即64轮压缩函数CF的迭代运算总共需要128个时钟周期。
为了进一步提高压缩函数CF的处理速度,在另一种可能的实施方式中,具体可以在同一时钟周期内,利用FPGA对前一轮迭代压缩运算中的所述字寄存器赋值运算进行并行处理,且利用FPGA对本轮迭代压缩运算中的所述中间变量赋值运算进行并行处理。
具体地,FPGA实现代码可以采用时序逻辑,采用流水线的操作方式,这样,可以将压缩函数CF的处理速度加倍。也就是说,虽然将本轮的中间变量赋值运算结果放入寄存器的过程中会花费一定的时间,导致同一轮迭代压缩运算的中间变量赋值运算与字寄存器赋值运算无法在同一时钟周期内完成,但是,上一轮字寄存器赋值运算与本轮中间变量赋值运算之间并不存在这种限制,因此,在同一个时钟周期内,可以先实现上一轮的字寄存器赋值运算,再实现本轮的中间变量赋值运算,例如,在第15轮压缩函数CF的迭代运算中,一个时钟周期内,启动第15轮的中间变量赋值运算,同时完成第14轮的字寄存器赋值运算,这样,可以实现64轮压缩函数CF的迭代运算只需要66个时钟周期。,
可见,本实施例中,SM3算法可以通过上述两种可能的实施方式,以希望能够在使用FPGA运行SM3算法时,可以利用FPGA的并行处理特点,能够使用尽量少的时钟周期实现64轮压缩函数CF的迭代运算,从而加快SM3运算的处理速度。
实施例三
参见图5,为本申请实施例提供的一种量子密钥分发系统的组成示意图,所述量子密钥分发QKD系统500包括通过经典网络进行通信的第一QKD终端501和第二QKD终端502;
所述第一QKD终端501,用于利用第一密钥对第一待认证数据进行HMAC-SM3运算,得到第一哈希值;利用第二密钥对所述第一哈希值进行加密,将得到的第一密文发送至所述第二QKD终端502;其中,所述第一待认证数据包括预设时段内所述第一QKD终端501向所述第二QKD终端502发送的数据、以及所述预设时段内所述第一QKD终端501从所述第二QKD终端502接收的数据;
所述第二QKD终端502,用于利用所述第一密钥对第二待认证数据进行HMAC-SM3运算,得到第二哈希值;利用与所述第二密钥不同的第三密钥对所述第二哈希值进行加密,将得到的第二密文发送至所述第一QKD终端501;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端502向所述第一QKD终端501发送的数据、以及所述预设时段内所述第二QKD终端502从所述第一QKD终端501接收的数据;
所述第一QKD终端501,还用于利用所述第三密钥对所述第二密文进行解密;判断解密后的哈希值与所述第一哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端502,还用于利用所述第二密钥对所述第一密文进行解密;判断解密后的哈希值与所述第二哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
在本申请的一种实施方式中,所述第一待认证数据还可以包括:所述第一QKD终端501从所述第二QKD终端502接收的终端标识信息;所述第二待认证数据还包括:所述第二QKD终端502从所述第一QKD终端501接收的终端标识信息;其中,所述终端标识信息包括所述第一QKD终端501和所述第二QKD终端502的终端标识。
在本申请的一种实施方式中,所述第一密钥可以是密钥缓存区中未被使用过的密钥数据,其中,所述密钥缓存区中存储了预先分配的密钥数据以及所述QKD系统500输出的量子密钥数据。
在本申请的一种实施方式中,所述第一QKD终端501或所述第二QKD终端502,具体可以用于利用现场可编程门阵列FPGA进行HMAC-SM3运算。
在本申请的一种实施方式中,SM3算法中的每一轮迭代压缩运算包括中间变量赋值运算和字寄存器赋值运算;则,所述第一QKD终端501或所述第二QKD终端502,具体可以用于在同一时钟周期内,利用FPGA对所述中间变量赋值运算或所述字寄存器赋值运算进行并行处理;或者,在同一时钟周期内,利用FPGA对前一轮迭代压缩运算中的所述字寄存器赋值运算进行并行处理,且利用FPGA对本轮迭代压缩运算中的所述中间变量赋值运算进行并行处理。
需要说明的是,本实施例三是与上述实施例一提供的方法对应的量子密钥分发系统,相关之处请参见实施例一的相关介绍,在此不再赘述。
实施例四
参见图6,为本申请实施例提供的另一种量子密钥分发系统的组成示意图,所述量子密钥分发QKD系统600包括通过经典网络进行通信的第一QKD终端601和第二QKD终端602;
所述第一QKD终端601,用于利用第四密钥对第一待认证数据进行HMAC-SM3运算,得到第三哈希值;利用第五密钥对所述第一待认证数据进行HMAC-SM3运算,得到第四哈希值;将所述第四哈希值发送至所述第二QKD终端602;其中,所述第四密钥与所述第五密钥为不同的密钥,所述第一待认证数据包括预设时段内所述第一QKD终端601向所述第二QKD终端602发送的数据、以及所述预设时段内所述第一QKD终端601从所述第二QKD终端602接收的数据;
所述第二QKD终端602,用于利用所述第四密钥对第二待认证数据进行HMAC-SM3运算,得到第五哈希值;利用所述第五密钥对所述第二待认证数据进行HMAC-SM3运算,得到第六哈希值;将所述第五哈希值发送至所述第一QKD终端601;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端602向所述第一QKD终端601发送的数据、以及所述预设时段内所述第二QKD终端602从所述第一QKD终端601接收的数据;
所述第一QKD终端601,还用于判断所述第三哈希值与所述第五哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端602,还用于判断所述四哈希值与所述第六哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
在本申请的一种实施方式中,所述第一待认证数据还包括:所述第一QKD终端601从所述第二QKD终端602接收的终端标识信息;所述第二待认证数据还包括:所述第二QKD终端602从所述第一QKD终端601接收的终端标识信息;其中,所述终端标识信息包括所述第一QKD终端601和所述第二QKD终端602的终端标识。
在本申请的一种实施方式中,所述第四密钥和所述第五密钥是密钥缓存区中未被使用过的密钥数据,其中,所述密钥缓存区中存储了预先分配的密钥数据以及所述QKD系统600输出的量子密钥数据。
在本申请的一种实施方式中,所述第一QKD终端601或所述第二QKD终端602,具体可以用于利用现场可编程门阵列FPGA进行HMAC-SM3运算。
在本申请的一种实施方式中,SM3算法中的每一轮迭代压缩运算包括中间变量赋值运算和字寄存器赋值运算;则,所述第一QKD终端601或所述第二QKD终端602,具体可以用于在同一时钟周期内,利用FPGA对所述中间变量赋值运算或所述字寄存器赋值运算进行并行处理;或者,在同一时钟周期内,利用FPGA对前一轮迭代压缩运算中的所述字寄存器赋值运算进行并行处理,且利用FPGA对本轮迭代压缩运算中的所述中间变量赋值运算进行并行处理。
需要说明的是,本实施例四是与上述实施例二提供的方法对应的量子密钥分发系统,相关之处请参见实施例二的相关介绍,在此不再赘述。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本申请各个实施例或者实施例的某些部分所述的方法。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (12)

1.一种基于HMAC-SM3算法的数据认证方法,其特征在于,所述方法应用于一种量子密钥分发QKD系统,所述QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端,所述方法包括:
所述第一QKD终端利用第一密钥对第一待认证数据进行HMAC-SM3运算,得到第一哈希值;利用第二密钥对所述第一哈希值进行加密,将得到的第一密文发送至所述第二QKD终端;其中,所述第一待认证数据包括预设时段内所述第一QKD终端向所述第二QKD终端发送的数据、以及所述预设时段内所述第一QKD终端从所述第二QKD终端接收的数据;
所述第二QKD终端利用所述第一密钥对第二待认证数据进行HMAC-SM3运算,得到第二哈希值;利用与所述第二密钥不同的第三密钥对所述第二哈希值进行加密,将得到的第二密文发送至所述第一QKD终端;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端向所述第一QKD终端发送的数据、以及所述预设时段内所述第二QKD终端从所述第一QKD终端接收的数据;
所述第一QKD终端利用所述第三密钥对所述第二密文进行解密;判断解密后的哈希值与所述第一哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端利用所述第二密钥对所述第一密文进行解密;判断解密后的哈希值与所述第二哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
2.根据权利要求1所述的方法,其特征在于,
所述第一待认证数据还包括:所述第一QKD终端从所述第二QKD终端接收的终端标识信息;
所述第二待认证数据还包括:所述第二QKD终端从所述第一QKD终端接收的终端标识信息;
其中,所述终端标识信息包括所述第一QKD终端和所述第二QKD终端的终端标识。
3.根据权利要求1所述的方法,其特征在于,
所述第一密钥是密钥缓存区中未被使用过的密钥数据,其中,所述密钥缓存区中存储了预先分配的密钥数据以及所述QKD系统输出的量子密钥数据。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述进行HMAC-SM3运算,包括:
利用现场可编程门阵列FPGA进行HMAC-SM3运算。
5.根据权利要求4所述的方法,其特征在于,SM3算法中的每一轮迭代压缩运算包括中间变量赋值运算和字寄存器赋值运算;
所述利用现场可编程门阵列FPGA进行HMAC-SM3运算,包括:
在同一时钟周期内,利用FPGA对所述中间变量赋值运算或所述字寄存器赋值运算进行并行处理;
或者,在同一时钟周期内,利用FPGA对前一轮迭代压缩运算中的所述字寄存器赋值运算进行并行处理,且利用FPGA对本轮迭代压缩运算中的所述中间变量赋值运算进行并行处理。
6.一种基于HMAC-SM3算法的数据认证方法,其特征在于,所述方法应用于一种量子密钥分发QKD系统,所述QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端,所述方法包括:
所述第一QKD终端利用第四密钥对第一待认证数据进行HMAC-SM3运算,得到第三哈希值;利用第五密钥对所述第一待认证数据进行HMAC-SM3运算,得到第四哈希值;将所述第四哈希值发送至所述第二QKD终端;其中,所述第四密钥与所述第五密钥为不同的密钥,所述第一待认证数据包括预设时段内所述第一QKD终端向所述第二QKD终端发送的数据、以及所述预设时段内所述第一QKD终端从所述第二QKD终端接收的数据;
所述第二QKD终端利用所述第四密钥对第二待认证数据进行HMAC-SM3运算,得到第五哈希值;利用所述第五密钥对所述第二待认证数据进行HMAC-SM3运算,得到第六哈希值;将所述第五哈希值发送至所述第一QKD终端;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端向所述第一QKD终端发送的数据、以及所述预设时段内所述第二QKD终端从所述第一QKD终端接收的数据;
所述第一QKD终端判断所述第三哈希值与所述第五哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端判断所述四哈希值与所述第六哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
7.根据权利要求6所述的方法,其特征在于,
所述第一待认证数据还包括:所述第一QKD终端从所述第二QKD终端接收的终端标识信息;
所述第二待认证数据还包括:所述第二QKD终端从所述第一QKD终端接收的终端标识信息;
其中,所述终端标识信息包括所述第一QKD终端和所述第二QKD终端的终端标识。
8.根据权利要求6所述的方法,其特征在于,
所述第四密钥和所述第五密钥是密钥缓存区中未被使用过的密钥数据,其中,所述密钥缓存区中存储了预先分配的密钥数据以及所述QKD系统输出的量子密钥数据。
9.根据权利要求6至8任一项所述的方法,其特征在于,所述进行HMAC-SM3运算,包括:
利用现场可编程门阵列FPGA进行HMAC-SM3运算。
10.根据权利要求9所述的方法,其特征在于,SM3算法中的每一轮迭代压缩运算包括中间变量赋值运算和字寄存器赋值运算;
所述利用现场可编程门阵列FPGA进行HMAC-SM3运算,包括:
在同一时钟周期内,利用FPGA对所述中间变量赋值运算或所述字寄存器赋值运算进行并行处理;
或者,在同一时钟周期内,利用FPGA对前一轮迭代压缩运算中的所述字寄存器赋值运算进行并行处理,且利用FPGA对本轮迭代压缩运算中的所述中间变量赋值运算进行并行处理。
11.一种量子密钥分发QKD系统,其特征在于,所述量子密钥分发QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端;
所述第一QKD终端,用于利用第一密钥对第一待认证数据进行HMAC-SM3运算,得到第一哈希值;利用第二密钥对所述第一哈希值进行加密,将得到的第一密文发送至所述第二QKD终端;其中,所述第一待认证数据包括预设时段内所述第一QKD终端向所述第二QKD终端发送的数据、以及所述预设时段内所述第一QKD终端从所述第二QKD终端接收的数据;
所述第二QKD终端,用于利用所述第一密钥对第二待认证数据进行HMAC-SM3运算,得到第二哈希值;利用与所述第二密钥不同的第三密钥对所述第二哈希值进行加密,将得到的第二密文发送至所述第一QKD终端;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端向所述第一QKD终端发送的数据、以及所述预设时段内所述第二QKD终端从所述第一QKD终端接收的数据;
所述第一QKD终端,还用于利用所述第三密钥对所述第二密文进行解密;判断解密后的哈希值与所述第一哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端,还用于利用所述第二密钥对所述第一密文进行解密;判断解密后的哈希值与所述第二哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
12.一种量子密钥分发QKD系统,其特征在于,所述量子密钥分发QKD系统包括通过经典网络进行通信的第一QKD终端和第二QKD终端;
所述第一QKD终端,用于利用第四密钥对第一待认证数据进行HMAC-SM3运算,得到第三哈希值;利用第五密钥对所述第一待认证数据进行HMAC-SM3运算,得到第四哈希值;将所述第四哈希值发送至所述第二QKD终端;其中,所述第四密钥与所述第五密钥为不同的密钥,所述第一待认证数据包括预设时段内所述第一QKD终端向所述第二QKD终端发送的数据、以及所述预设时段内所述第一QKD终端从所述第二QKD终端接收的数据;
所述第二QKD终端,用于利用所述第四密钥对第二待认证数据进行HMAC-SM3运算,得到第五哈希值;利用所述第五密钥对所述第二待认证数据进行HMAC-SM3运算,得到第六哈希值;将所述第五哈希值发送至所述第一QKD终端;其中,所述第二待认证数据包括所述预设时段内所述第二QKD终端向所述第一QKD终端发送的数据、以及所述预设时段内所述第二QKD终端从所述第一QKD终端接收的数据;
所述第一QKD终端,还用于判断所述第三哈希值与所述第五哈希值是否相同;若相同,则确定所述第一待认证数据没被篡改;若不同,则确定所述第一待认证数据被篡改;
所述第二QKD终端,还用于判断所述四哈希值与所述第六哈希值是否相同;若相同,则确定所述第二待认证数据没被篡改;若不同,则确定所述第二待认证数据被篡改。
CN201710581983.6A 2017-07-17 2017-07-17 基于hmac-sm3算法的数据认证方法及量子密钥分发系统 Active CN109274480B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710581983.6A CN109274480B (zh) 2017-07-17 2017-07-17 基于hmac-sm3算法的数据认证方法及量子密钥分发系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710581983.6A CN109274480B (zh) 2017-07-17 2017-07-17 基于hmac-sm3算法的数据认证方法及量子密钥分发系统

Publications (2)

Publication Number Publication Date
CN109274480A CN109274480A (zh) 2019-01-25
CN109274480B true CN109274480B (zh) 2019-08-02

Family

ID=65152446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710581983.6A Active CN109274480B (zh) 2017-07-17 2017-07-17 基于hmac-sm3算法的数据认证方法及量子密钥分发系统

Country Status (1)

Country Link
CN (1) CN109274480B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110601822A (zh) * 2019-08-20 2019-12-20 国家电网有限公司 一种基于量子保密通信技术的加密盲签名方法
CN111143247B (zh) * 2019-12-31 2023-06-30 海光信息技术股份有限公司 存储装置数据完整性保护方法及其控制器、片上系统
CN111726224A (zh) * 2020-05-13 2020-09-29 北京信息科技大学 一种基于量子保密通信的数据完整性快速认证方法、系统、终端及存储介质
CN113676314B (zh) * 2020-05-14 2022-07-26 科大国盾量子技术股份有限公司 量子密钥管理方法、比对方法、输出方法、装置及系统
CN111913749A (zh) * 2020-08-07 2020-11-10 山东大学 基于流水线的sm3算法fpga实现方法及系统
CN112019327B (zh) * 2020-08-26 2023-05-23 成都卫士通信息产业股份有限公司 一种白盒实现方法、装置、电子设备及计算机存储介质
CN113704791B (zh) * 2021-09-01 2024-03-15 北京兆芯电子科技有限公司 处理器、以及哈希信息认证码编码方法
CN115022042A (zh) * 2022-06-02 2022-09-06 贵州数据宝网络科技有限公司 一种保护数据隐私的合规码验证方法和计算机可读介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103095461A (zh) * 2013-01-23 2013-05-08 山东量子科学技术研究院有限公司 一种量子安全网络设备间网络信令的认证方法
CN103338448A (zh) * 2013-06-07 2013-10-02 国家电网公司 一种基于量子密钥分发的无线局域网安全通信方法
CN106161004A (zh) * 2015-03-31 2016-11-23 上海复旦微电子集团股份有限公司 一种hmac-sm3密码算法的侧信道能量分析方法及装置
CN106533673A (zh) * 2016-12-08 2017-03-22 浙江神州量子网络科技有限公司 一种适用于多方量子通信的隐私放大方法
CN106712931A (zh) * 2015-08-20 2017-05-24 上海国盾量子信息技术有限公司 基于量子密码网络的手机令牌身份认证系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9509506B2 (en) * 2011-09-30 2016-11-29 Los Alamos National Security, Llc Quantum key management

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103095461A (zh) * 2013-01-23 2013-05-08 山东量子科学技术研究院有限公司 一种量子安全网络设备间网络信令的认证方法
CN103338448A (zh) * 2013-06-07 2013-10-02 国家电网公司 一种基于量子密钥分发的无线局域网安全通信方法
CN106161004A (zh) * 2015-03-31 2016-11-23 上海复旦微电子集团股份有限公司 一种hmac-sm3密码算法的侧信道能量分析方法及装置
CN106712931A (zh) * 2015-08-20 2017-05-24 上海国盾量子信息技术有限公司 基于量子密码网络的手机令牌身份认证系统及方法
CN106533673A (zh) * 2016-12-08 2017-03-22 浙江神州量子网络科技有限公司 一种适用于多方量子通信的隐私放大方法

Also Published As

Publication number Publication date
CN109274480A (zh) 2019-01-25

Similar Documents

Publication Publication Date Title
CN109274480B (zh) 基于hmac-sm3算法的数据认证方法及量子密钥分发系统
JP4477616B2 (ja) 署名システム及び署名方法
US8031865B2 (en) Multiple level security system and method for encrypting data within documents
CN107566407B (zh) 一种基于USBkey的双向认证数据安全传输与存储方法
CN109495249B (zh) 一种区块链系统的数据存储方法、节点和区块链系统
JP3140482B2 (ja) 情報を暗号化/復号化する方法と装置
CN107395368B (zh) 无介质环境中的数字签名方法及解封装方法与解密方法
CN114362971B (zh) 一种基于哈希算法的数字资产确权和溯源方法
JP2019507510A (ja) 情報及び階層的で決定性の暗号化鍵のセキュアな交換のための共通秘密の決定
KR20200012845A (ko) 점진적 키 암호화 알고리즘
CN106548353B (zh) 一种商品防伪码生成与验证方法
JP2579440B2 (ja) メッセージ確認方法及び通信システム
CN107147487B (zh) 对称密钥随机分组密码
CN102239714B (zh) 基于应用层的移动金融业务的安全通信方法及其装置
CN109274485A (zh) 一种数据加密方法、数据认证方法及相关设备和系统
WO2005071881A1 (ja) ミックスネットシステム
CN107911209A (zh) 建立抗量子计算攻击的安全性公钥密码的方法
CN109951276B (zh) 基于tpm的嵌入式设备远程身份认证方法
CN106067878A (zh) 一种网络数据加密传输方法
CN113225318B (zh) 一种政务大数据加密传输及安全存储的方法及系统
CN113268762B (zh) 一种基于lfsr哈希的无条件安全认证方法
CN114065249A (zh) 一种认证加密方法
CN112907247B (zh) 一种区块链授权计算控制方法
CN108199836B (zh) 一种密钥与设备绑定、解绑定的方法及装置
Rajasekar et al. Introduction to classical cryptography

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