高速QKD系统的随机数源及实时自检方案研究

2021-02-25 06:03唐世彪程节栗帅
量子电子学报 2021年1期
关键词:量子态时钟比特

唐世彪, 程节, 栗帅

(科大国盾量子技术股份有限公司, 安徽 合肥 230088)

0 引 言

量子密钥分发(QKD)技术是近年来蓬勃发展的一种有效对抗量子计算机威胁的新型安全保密通信技术,其通过传输量子态光脉冲信号,使通信的双方生成一对随机的、安全的密钥。经过三十多年的发展,目前密钥分发距离和速率不断提升[1,2]。

基于诱骗态方案BB84 协议的QKD 系统中,要求发送端随机发送4 种非正交基矢的量子态,并且使用至少3 种强度进行随机调制[3]。QKD 系统的无条件安全性建立在理想的量子设备、经典设备和随机数的假设下,量子密钥根源来自于量子密钥分发过程中发光编码使用的随机数,一个有缺陷的随机数源可能会导致严重的安全漏洞[4,5]。因此,在QKD 系统中需要使用满足均匀分布、不可预测、不可重复产生的真随机数发生器(TRNG),其随机数需要满足相关随机性检测标准。

QKD 系统可采用经典或量子随机数发生器作为真随机数源[6],随着未来QKD 系统工作频率越来越高,QKD 系统对真随机数的速率需求大大增加。符合商密标准的经典真随机数发生器WNG-8 芯片单片可产生20 Mbps 随机数,通过多片叠加可以满足较低发射频率的QKD 系统使用需求,但对于GHz 频率的高速QKD 系统不太适用;量子随机数发生器是依据量子力学的概率性设计,需要较为复杂的源、探测系统、后处理装置[7],成本高、集成度低,不便于高速QKD 系统小型化、集成化研究。为此,本文详细梳理了高速QKD 所需的真随机数源的设计需求,并设计实现了基于FPGA 的低成本、高集成度10 Gbps高速随机数源,同时配套设计了10 Gbps 带宽的实时全0 全1 自检方案,保证了该随机数源的可靠性。

1 方案原理描述

1.1 随机数源整体需求

诱骗态BB84 协议[8]是目前得到严格安全证明、使用最广泛的实用化QKD 协议, 采用该协议的QKD 系统,其基本结构如图1 所示。

图1 诱骗态BB84 协议QKD 系统的基本结构Fig.1 Basic structure of decoy BB84 protocol QKD system

在BB84 协议QKD 系统中,发送端处理器(通常为FPGA)从随机数发生器实时获取高速的随机数序列,产生二维希尔伯特空间的4 种量子态|φ1〉、|φ2〉、|ψ1〉、|ψ2〉的数字编码,定义二维希尔伯特空间两组正交基分别记为Φ 与Ψ,其中Φ= {|φ1〉,|φ2〉}, Ψ = {|ψ1〉,|ψ2〉}。定义量子态|φ1〉和|ψ1〉与经典比特“0”对应,量子态|φ2〉和|ψ1〉与经典比特“1”对应,基Φ 与经典比特“0”对应,基Ψ 与经典比特“1”对应。以诱骗态BB84 协议中常使用的三态协议为例,量子态光脉冲需具有3 种不同强度,分别为平均光子数为μ的信号态、平均光子数为ν1的诱骗态1、平均光子数为ν2的诱骗态2,信号态、诱骗态1、诱骗态2 光脉冲的强度应符合0 ≤ν2<ν1<μ[9]。信号态:诱骗态1:诱骗态2 按照一定的比例(例如6:1:1)进行编码并调制发射,该编码比例通过对随机数发生器输入的随机序列进行二次编码得到。

发送端处理器利用随机数完成以上编码后,QKD 系统再使用强度调制器、相位调制器等将以上编码的数字信号加载到实际的光脉冲信号上,形成真正的不同强度的四种|φ1〉、|φ2〉、|ψ1〉、|ψ2〉量子态单光子信号。光信号经光纤量子信道发送至Bob 端,之后Bob 端使用随机选择的测量基矢(即Φ 或Ψ)完成量子态的测量,并经过两端同步基矢比对过程,保留基矢一致的量子态对应的密钥信息,形成共享密钥[10]。

为实现以上数字编码需求,以强度比例6:1:1 为例,设计采用3 bits 随机数编码强度信息、2 bits 随机数编码量子态信息,实现1:1:1:1 的量子态比例,因此总计使用5 bits 随机数生成一个量子态的数字编码,具体对应关系如图2 所示。

图2 随机发光编码方案Fig.2 Random light encode scheme

基于诱骗态BB84 协议的QKD 系统,由于发送端发射的单光子量子态光信号强度很弱,而光纤量子信道传输每十公里衰减近2 dB,接收端单光子探测器的探测效率也只有10%左右,因此每个量子态信号被探测到的概率极低,导致长距离后量子密钥生成速率极低[9],这极大地限制了QKD 系统的工作距离。为此,国际、国内普遍采用的一种应对方式是提升量子态发射频率,而提升发射频率无疑会成比例提升随机数源的速率及可靠性要求。以2 GHz 发射频率为例,按照以上发光数字编码方式,需要5 倍速率即10 Gbps 的实时生成随机数。

为实时生成如此高速率的随机数,并实时进行发光数字编码,所提出设计采用了基于FPGA 平台的实现方案。随机数发生器阵列每个时钟周期生成100 bits 随机数,采用100 bits 的自定义并行总线输出,再经100 bits 输入位宽的游程检测模块检测过滤,检测通过的随机数仍然通过100 bits 自定义总线输出给后级发光数字编码模块进行20 路并行发光编码处理,充分利用FPGA 平台的并行处理能力,在100 MHz运行频率下,即可完成2 GHz 发射频率的QKD 系统随机数生成、自检、发光数字编码过程,整体结构如图3 所示。

图3 QKD 系统随机发光编码数据处理结构Fig.3 The data processing structure of random light encoding in QKD system

1.2 随机数发生器设计实现

所提出基于FPGA 平台的随机数源设计方案采用相位抖动原理,是一种基于物理随机源电路的真随机数发生器方案[6],可以在数字电路中方便地设计与实现,具有低成本、高集成度的优点。

图4 相位抖动随机数发生器基本原理Fig.4 Basic principle of phase jitter TRNG

图4 为单个振荡器生成随机数的基本原理,在FPGA 中采用组合逻辑实现的3 个取反逻辑单元搭建高频大抖动振荡器,该振荡器输出的带抖动的信号在FPGA 中用固定的低频采样时钟通过D 触发器采样,即可在D 触发器输出端得到与低频采样时钟速率一致的随机序列。

单个振荡器的采样输出的每比特随机数通常没有足够的平均熵,为提升输出随机数每比特的平均熵,可以通过增加后处理算法或者多个振荡器叠加的方法来解决。考虑到增加后数据处理算法将降低随机数输出速率,此处通过采用多个振荡器叠加的方法来提升随机数每比特的平均熵。依据Schellekens等[11]的分析结论,采用3 个反相器搭建单个振荡器,使得相位抖动在4%的情况下,不少于107 个振荡器叠加可以使得输出的随机数比特满足平均熵要求,置信度达到99%。为此,所提出设计采用128 个振荡器叠加,以保证输出的随机数平均熵达标。

小朋友并非天生这么“听话”的。我们见到凯特时已经非常good manner了,但4岁弟弟安祖却是一个非常调皮捣乱的小朋友。因为曾经患过耳疾,所以开化有点晚,经常乱叫、大哭和扔东西。对安祖影响到我家的问题,家长都会当着安祖的面及时招呼和道歉。时不时我家围墙会伸出她妈妈的头:“不好意思,安祖把×××扔到你家院子了。”或者他爸爸:“不好意思,安祖把泥巴扔你家墙上了。”(我们还根本没看到,为这泥巴他妈妈还特意送了一棵番茄树给蛮蛮。)这时我们都会心一笑,以后见到扔过来的东西,直接扔回去就好了。

图5 振荡器阵列处理网络Fig.5 Ring oscillator array processing network

图5 为128 个振荡器阵列及多层异或触发器网络结构图,第一级振荡器与异或触发器网络采用8 个振荡器、9 个D 触发器、7 个异或门实现,16 个一级振荡器与异或触发器网络再经过二级异或和D 触发器采样,最终输出平均熵合格的随机数。该网络中采样时钟设置为100 MHz,单个二级振荡器网络随机数生成速率为100 Mbps。

以该振荡器网络为基础单元,在FPGA 芯片内部并行实现100 路,即得到需求分析中所需的100 路100 Mbps 速率的真随机数发生器,总计输出带宽10 Gbps。

1.3 自检模块设计实现

为在随机数发生器出现故障、随机数生成功能失效时及时发现,在随机数发生器后级增加了一个10 Gbps 处理带宽的自检模块。该模块采用全0 全1 检测方法,当生成的随机数出现连续的全0 或全1序列,且长度达到设定阈值N(参数可配)时,判定当前随机数发生器失效,输出报警信号,停止随机数输出,并重启随机数发生器模块。该自检方案来自国际通用的EAL 信息安全产品测评认证中所使用的《AIS31-A proposal for: Functionality classes and evaluation methodology for true(physical)random number generators》真随机数检测标准E.5 小节。

考虑到QKD 系统获取随机数进行随机发光编码时,每个时钟周期会一次性获取100 bits,再按照相邻5 bits 一组分组进行编码处理,因此不能单独对100 路随机数发生器进行全0 全1 检测,需要对每个时钟周期的100 bits 进行并串转换,之后对该串行数据实时全0 全1 统计。如果直接对并串转换后的10 Gbps 随机数进行全0 全1 统计,FPGA 工作至少需要10 GHz,而通常FPGA 工作频率在200 MHz 以内,显然无法完成该统计需求。为此,设计如图6 所示的电路结构,充分利用FPGA 的并行处理和流水线处理优势,在完成并串转换的同时,对转换后的数据完成相邻比特的全0 全1 特征统计,并在全0 或全1 长度超出设定阈值时触发报警信号。

图6 自检模块处理数据流Fig.6 Data flow of self-check module processing

图6 为自检模块的处理过程数据流示意图,最左侧为100 路100 Mbps 的真随机数阵列,每个时钟周期输出100 bits 随机数rn-0 ~rn-99。中间为100 组串联的“寄存器缓存+统计单元”,每个单元内置一组100 bits 的寄存器,能够实现“接收锁存上一级单元统计结果+统计接收来的随机数最低位1 bit 随机数的01 特性+移位丢弃刚统计的最低位1 bit+更新01 统计结果并输出给下级单元+连续0 或1 超过阈值N即报警”的功能。最右侧为自检异常信号的汇总模块。

每个时钟周期生成的100 bits 随机数,每经过一个时钟周期就会往右整体搬移一次,同时完成最低1 bit 的01 特性统计+移位抛弃最低1 bit 的操作。经过100 个时钟周期后,该100 bits 随机数也就流经100 个统计单元,从而得到了该组100 bits 随机数的全0 全1 统计特性。

在检测过程中如果在哪一级统计单元发现当前缓存的这组100 bits 随机数已经连续出现N个全0或全1,则触发报警信号,该信号统一发送到错误汇总子模块,由该模块完成告警信号的整体输出。

2 方案验证与讨论

按照以上随机数发生器设计实现方案,在Altera Cyclone IV EP4CE115 型号的FPGA 芯片上完成开发编译,根据编译结果,单个100 Mbps 的振荡器网络基础单元消耗245 个LUT 资源,完整的10 Gbps 随机数发生器消耗25687 个LUT 资源,占整片FPGA 资源量的22.4%,FPGA 资源裕量充足。

按照《GM/T-0005-2012 随机性检测规范》标准要求对该随机数发生器的输出进行随机性检测,采集4 组输出数据进行测试,每组大小为1000×1000,000 bits,每个检测项按照通过比例(Pass rate)大于等于0.981 测试通过,详细结果如表1。

表1 随机性测试结果Table 1 Random test results

针对以上自检模块设计实现方案,搭建FPGA 仿真验证平台,设置全0 或全1 的异常触发门限为20,构造测试用仿真数据作为输入开始仿真,模块数据处理过程的仿真波形如图7。从仿真波形可以看出,输入到unit1 统计单元的第1 组100 bits 仿真数据trng-data-q[99:0]为0xf-fffc-0000-0000-0000-0000-5588,该数据中间有超过64 bits 的连续全0, 以便触发自检模块的检测机制。unit-n-new-cnt[8:0] 寄存器是第n级统计单元的输出, 左侧最高位用于指示统计的是全0 还是全1, 低8 bits 用于表示全0 或全1 的长度。从unit 1- >unit 2- >unit 3- >unit 4 的new-cnt[8:0] 统计结果可以看到, 前3 级检测到输入的0xf-fffc-0000-0000-0000-0000-5588 数据最低3 位连续为比特0, 到第4 位变成了比特1, 因此unit-4-new-cnt[8:0]变为0x101,表明当前开始检测全1,且目前发现连续比特1 的数量为1 个。

图8 为自检模块的仿真结果,显示的是第31~35 级检测单元的自检异常信号触发情况。随着逐级检测持续推进,由于0xf-fffc-0000-0000-0000-0000-5588 数据中从倒数第16 比特开始一直为0,当到达unit35 时,已经连续出现20 个比特0,此时unit-35-new-cnt[8:0]寄存器也显示为0x014,即检测到连续20个比特0 的现象,进而触发拉高了unit-35-data-error 错误信号。该error 信号进入到错误汇总模块,进而触发拉高了对外输出的报警信号data-error。由此可见,该自检模块成功完成了自检功能,且实现了设计中的流水线处理目标,能够满足10 Gbps 随机数的实时自检需求。

通过以上测试验证,确认所设计实现的随机数源能够产生满足QKD 系统所需的高速随机数,且随机性符合《GM/T-0005-2012 随机性检测规范》。此外,配套设计实现的自检模块能够满足10 Gbps 随机数源的全0 或全1 实时自检需求。

图7 自检模块仿真-流水线处理Fig.7 Simulation results of self check module-pipeline processing

图8 自检模块仿真-触发异常信号Fig.8 Simulation results of self check module-trigger error

3 结 论

详细介绍了一种用于高速QKD 系统的随机数源及实时自检方案,其中随机数源采用相位抖动原理实现, 通过叠加128 个振荡器实现单个随机数源, 再并行例化产生10 Gbps 高速随机数, 数据符合《GM/T-0005-2012 随机性检测规范》; 随后依据QKD 系统对随机数的独特使用需求, 设计实现了10 Gbps 处理带宽的实时全0 全1 自检模块,保障了QKD 系统所使用高速随机数的可靠性,该方案能够满足2 GHz 以上发射频率的高速QKD 系统随机数使用需求。

相较于多片商用随机数芯片叠加方案、量子随机数发生器方案,所提出方案的集成度与可靠性更高,成本更低,且所实现的随机数源和自检方案方便升级扩展,有望支持更高速QKD 系统的研究工作。

猜你喜欢
量子态时钟比特
基于l1范数相干度的量子态区分
古代的时钟
Conduit necrosis following esophagectomy:An up-to-date literature review
这个时钟一根针
比特币还能投资吗
比特币分裂
量子特性与量子信息技术
比特币一年涨135%重回5530元
有趣的时钟
连续变量量子态的光学控制分析