一种量子密钥分发后处理中对误码进行级联纠错的方法
【专利摘要】本发明涉及量子密钥纠错领域,尤其涉及一种量子密钥分发后处理中对误码进行级联纠错的方法,对密钥块进行多轮纠错,当一轮纠错结束后,找到本轮被纠正的误码的位置,再通过历史记录信息,找到误码在随机重排前的位置,此时,产生了新的有奇数个错误的块,对这些新定位出有误码的块再次进行二分查错;不断回溯纠错,当发送端和接收端在记录中全部轮数的所有的块下的奇偶校验都一致时停止,这时进入下一轮的纠错。在进行纠错的过程中通过回溯查找,进行伴随错误的纠错,利用历史信息,充分挖掘通信双方的交互信息,在一轮纠错中完成传统协议多轮才能完成的效果,大大提高了纠错效率。
【专利说明】
一种量子密钥分发后处理中对误码进行级联纠错的方法
技术领域
[0001] 本发明涉及量子密钥纠错领域,尤其涉及一种量子密钥分发后处理中对误码进行 级联纠错的方法。
【背景技术】
[0002] 量子密码学,又称量子密钥分发,英文简称QKD,是利用量子力学特性来保证通信 安全性。它使通信的双方能够产生并分享一个随机的,安全的密钥,来加密和解密信息。
[0003] 量子密码的一个最重要性质是,如果有第三方试图窃听密码,则通信的双方便会 察觉。这种性质基于量子力学的基本原理:任何对量子系统的测量都会对系统产生干扰。 第三方试图窃听密码,必须用某种方式测量它,而这些测量就会带来可察觉的异常。通过量 子叠加态或量子纠缠态来传输信息,通信系统便可以检测是否存在窃听。当窃听低于一定 标准,一个有安全保障的密钥就可以产生了。
[0004] 量子密码只用于产生和分发密钥,并没有传输任何实质的信息。密钥可通过某些 加密算法来加密信息,加密过的信息可以在标准信道中传输。
[0005] 在量子密钥分发中,通常定义通信双方的发送端为Alice,接收端为Bob,窃听者 为eve。密钥就是通信双方持有的一段随机串。它被发送用来加密一些机密的文件,得到密 文,通过信道传输给接收方,接收方再使用密钥进行解密,得到机密文件。
[0006] 如图1所示,由于接收端从与其对接的量子密钥分发物理端获取的密钥与发送 端从其量子密钥分发系统物理端获取的密钥有可能存在不一致的位,其量子密钥分发物理 端可以通过软件模拟方式实现,所以发送端和接收端分别通过量子密钥分发后处理将各自 物理端生成的不一致的密钥转化为最终应用的相同的密钥。发送端和接收端的量子密钥分 发后处理分别包含基比对、误码纠错和私钥放大三个部分;在发送端和接收端进行了基比 对之后,各自保有一段密钥。但是因为信道噪声和存在窃听者的原因,通信双方的密钥存在 一定的误码。这时候就需要对误码进行纠错,在保证通信双方的密钥一致的基本前提下尽 可能少地暴露密钥。
[0007] Alice和Bob的密钥对应位存在不同,这些位就称为误码,如下表所示,框中的位 就是误码:
[0008]
[0009] 这里定义:误码率=出现错误的位/总位数,误码率越高,纠错系统纠错的代价就 越大。由于加密的需求,最终要保证Alice个Bob的密钥完全一致,这就是纠错模块的任务 和功能。
[0010] 纠错是很关键的一个部分,这是因为:
[0011] 1,如果Alice和Bob的密钥不一致,那么加密和解密的过程就会出错,通信就无法 进行;
[0012] 2,在使用密钥进行加密时,由于通信使用的是"一次一密"的技术,对密钥的消耗 很大,因此如果密钥的长度较短,则需要经常重新生成密钥,对系统来说是灾难性的。因此 对量子密钥分发后处理中的误码纠错提出三个原则:
[0013] -、保证纠错结束后Alice和Bob的密钥完全一致。这是保证通信的加密解密步 骤能够成功的最基本要素。
[0014] 二、丢弃泄露位的操作。由于要对Alice和Bob的密钥进行纠错必须进行双方的 通信,而这种通信也有可能会被窃听者eve窃听。通信中在信道中传输的有关密钥的信息 都可能泄露给窃听者,这样窃听者可能根据窃听到的信息伪装成接收端或者发送端,这样 系统的安全就无法保证。因此,出于安全性考虑,纠错过程中,Alice传给Bob的有关密钥 的位信息都要被丢弃。具体的原则是,在信道中传递了多少位有关密钥的信息,就丢弃多少 位密钥。
[0015] 三、保留尽可能长的密钥。在保证密钥一致性和安全性的前提下,使得在纠错结束 后,Alice和Bob持有的密钥尽可能的长。由于在纠错过程中会丢弃密钥中的一些位,因此 在纠错结束时Alice和Bob双方的密钥会比初始时少很多。而由于加密的要求,需要使得 Alice和Bob所持有的密钥尽可能的长。
[0016] 评价纠错性能的最重要指标是纠错效率,它代表产生的密钥在整个量子密钥分发 系统能够带来的贡献,保留越长的密钥,系统的性能越好。如图2所示,纠错效率的定义如 下:纠错效率=纠错后剩余的密钥长度/纠错前密钥长度。
[0017] Cascade是一种基于对分查错协议的交互式纠错协议,对分查错协议(BBBSS)是 第一个应用于量子密钥分发后处理的纠错协议。对分协议主要原理是Alice和Bob不断二 分当前的块,通过传输奇偶校验和来定位错误在前一半或后一半,不断缩小查找范围,最终 得到一位错误。这样,在一个分块中,如果错误为奇数个,则最终可以纠正一个错误,否则, 不能查找出错误。
[0018] 具体点说,当Alice和Bob对应某一块中的密钥含有奇数个错误时:Alice将块内 的密钥平分成两个子块,计算其中一个子块的奇偶校验和发送给Bob,在我们的实现中,是 将前一个子块的奇偶校验和发给Bob ;
[0019] Bob以同样的方式划分自己的密钥串,并将计算结果与Alice比较,确定密钥串的 哪一个子块中含有奇数个错误,我们的实现中,具体方法是这样:Bob将块内密钥平均分成 两个子块,计算前一个子块中的奇偶校验和,和传过来的Alice的奇偶校验和进行比较,如 果奇偶校验和相同,则说明误码出现在后一个子块中,否则误码出现在前一个子块中;
[0020] 利用前两步操作,可以将错误出现的范围每次缩小一半。重复这一过程,直到确定 找到一个错误。对比其他协议,它在一轮中一定可以纠正一个误码,因此他的纠错效率相对 较高。
[0021] 但传统的Cascade协议在最关键最重要的指标 纠错效率的表现并没有理论上 计算的好。因为传统协议只是进行简单的二分定位,在纠错过程中在信道内传递了较多冗 余信息,暴露的密钥过多,纠错结束后所剩余的密钥数量比较少。传统协议没有充分利用通 信双方传递的信息,浪费了带宽和信道传输的信息,使得整个协议所达到的吞吐量并不高, 也就是纠错效率不高。
【发明内容】
[0022] 本发明的目的在于提供一种在量子密钥分发后处理中对误码进行纠错时提高纠 错效率的纠错方法。
[0023] 为达到上述发明目的,本发明提供一种量子密钥分发后处理中对误码进行级联纠 错的方法,包括:
[0024] 发送端获取第一原始密钥和误码率估计值;
[0025] 接收端获取第二原始密钥和误码率估计值;
[0026] 发送端和接收端分别根据误码率估计值计算块长,确定各自的调度方案,进行多 轮纠错;
[0027] 其中,一轮纠错过程包括如下步骤:
[0028] S1、发送端产生随机种子并将随机种子发给接收端,发送端和接收端根据随机种 子对自身密钥进行随机重排;
[0029] S2、发送端和接收端根据调度方案中每一轮的密钥分块长度,将第一、二原始密钥 进行分块,并给第一、二原始密钥的每个密钥位按照相同顺序编号;
[0030] S3、发送端和接收端记录随机重排前原始位置与重排后位置的对应关系;
[0031] S4、发送端和接收端对各自的每个密钥块求奇偶校验和,并且发送端将自身每个 密钥块的奇偶校验和发送给接收端;
[0032] S5、接收端将自身的每个密钥块奇偶校验和与其密钥块编号相同的发送端自身的 密钥块奇偶校验和进行异或运算,如果结果为1,则接收端的密钥块奇偶校验和与其密钥 块编号相同的发送端的密钥块奇偶校验和不同,其存在奇数个错误;
[0033] 将奇偶校验和不同的密钥块编号发给发送端,其中,接收端和发送端分别将这些 奇偶校验和不同的密钥块记作mismatch块;
[0034] S6、发送端和接收端对各自所有mismatch块进行对块二分:
[0035] 若mismatch块中发送端和接收端对应某一密钥块中的密钥含有奇数个错误时, 将发送端和接收端的块内密钥平分成两个子块,把前一个子块的密钥作为S4的输入,运行 S4 ;
[0036] 若mismatch块中发送端和接收端对应某一密钥块中的密钥含有偶数个错误时, 不进行纠错;
[0037] 若子块中的密钥长度为1,即定位到了误码出现的位置,将结果输出到S7 ;
[0038] S7、根据S6得到的误码的准确位置信息,将接收端对应位的0或1值取反;
[0039] S8,回溯查错;
[0040] 通过S5找到本轮被纠正的误码的位置,再通过S3记录的历史记录信息,找到误码 在随机重排前的位置,此时,产生了新的有奇数个错误的块,在新的块中的误码记作伴随错 误;利用历史记录信息,对这些新定位出有误码的块再次进行二分查错;不断回溯纠错,当 发送端和接收端在记录中全部轮数的所有的块下的奇偶校验都一致时停止,这时根据纠错 的调度方案,进入下一轮的纠错;
[0041] 其中,伴随错误是指,在上一次的纠错过程中,某一块在发送端和接收端的奇偶校 验和相等,而在下一次的纠错过程中纠正了这个块的一个误码,则该块中一定存在另一个 误码,这个误码成为伴随错误。
[0042] 进一步,步骤S6中,若mismatch块中发送端和接收端对应某一密钥块中的密钥 含有偶数个错误时,当mismatch块是分块之后第一次的奇偶校验和,则不进行纠错;当 mismatch块不是分块之后第一次的奇偶校验和,即前一次二分之后的前一半子块的奇偶校 验结果,则对前一次二分之后的后一半子块的密钥进行二分。
[0043] 进一步,调度方案中,初始块长为0. 8/e,之后每一轮的块长为前一轮的块长的5 倍;其中,e为误码率估计值。
[0044] 本发明基于对分查错的交互式纠错协议,采用变长密钥块块长,即根据误码率的 不同采取不同的块长,每次纠错过程中的每一轮都采取不同的块长;在进行纠错的过程中 通过回溯查找,进行伴随错误的纠错,利用历史信息,充分挖掘通信双方的交互信息,在一 轮纠错中完成传统协议多轮才能完成的效果,大大提高了纠错效率。
【附图说明】
[0045] 图1为量子密钥分发系统中Alice/Bob的结构不意图;
[0046] 图2为纠错效率的示意图;
[0047] 图3为Cascade协议实现时的数据结构图;
[0048] 图4为本发明一轮级联纠错的流程图;
[0049] 图5为本发明密钥随机重排的示意图;
[0050] 图6为本发明实施例中纠错时的举例图;
[0051] 图7为本发明实施例中回溯查错时的举例图;
[0052] 图8为本发明与传统纠错时效率的对比图。
【具体实施方式】
[0053] Cascade协议在实现时的数据结构如图3所示,Cascade, cpp是协议的主类, 它内部有整个协议的实现过程,按照Cascade协议的执行流程进行纠错。它调用Data_ Interface, cpp的函数来在发送端Alice和接收端Bob建立连接;用CommuData. cpp的函 数来对Alice和Bob双方的交互信息进行封装和解封;调用CascadeRecord. cpp中提供的 数据结构和算法进行奇偶校验和计算,分块,定位误码位置,定位回溯查找伴随错误时定位 字块位置,记录随机重排的位置对应关系等;用Para, cpp中的函数得到协议输入的误码率 和密钥。
[0054] 通信双方根据系统输入的对误码率的估计,设置调度方案。本发明设计的具体方 案如下:初始块长为〇. 8/e,e为误码率估计值,之后每一轮的块长为前一轮的块长的5倍。 例如初始估计误码率为5%,则初始块长为16,第二轮的块长为80,第三轮的块长为400,以 此类推。这样纠错的调度方案是根据多次实验得到的,可以取得最大的效率,并保证彻底纠 错完成。
[0055] 纠错按照先使用小块长,再使用大块长的原则。因为需要很多轮的纠错,因此需要 在一开始就把每一轮的块长确定下来。并且,由于通信双方的误码率估计值是相同的,通信 双方的调度方案也是相同的。Alice和Bob分别按照该调度方案,根据每一轮纠错的块长 大小进行纠错。
[0056] 纠错阶段:纠错要进行多轮,每一轮都按照下面的流程,只是分块的长度不一样。
[0057] 如图4所示,是具体进行一轮Winnow纠错时,密钥纠错的过程与数据传输的过程。 纵向的箭头指的是A1 ice和Bob内部的密钥的流向,是发送端和接收端内部的算法;横向的 箭头指的是通信双方交互的信息的流向。下面是一轮纠错过程的详细步骤,其包括:
[0058] S1、随机重排:发送端产生随机种子并将随机种子发给接收端,发送端和接收端根 据随机种子对自身密钥进行随机重排;
[0059] 随机重排就是对Alice和Bob获取的第一、二原始密钥进行一次重新的排序,使得 误码尽可能随机分布,使得纠错的效率达到最优。如图5所示,这就是一次简单的,交换位 数较少的随机重排。随机重排只是对密钥中随机的一些位进行交换,不会影响〇和1的总 数。并且通信双方使用一个随机种子,所以随机重排后误码的个数也不发生改变。
[0060] 进行随机重排的原因是,用cascade协议仅进行一轮纠错是不够的,因为一轮只 能纠正一个块中的一个错误。进行随机重排之后可以使得误码重新分布,就可以再利用 cascade协议进行纠错了。
[0061] 具体的过程是,由Alice产生随机种子,发送给Bob ;这样双方持有的是相同的随 机种子。接着,Alice和Bob利用这个随机种子对自身密钥进行随机重排。
[0062] S2、密钥分块:发送端和接收端根据调度方案中每一轮的密钥分块长度,将第一、 二原始密钥进行分块,并给第一、二原始密钥的每个密钥位按照相同顺序编号;
[0063] S3、记录:发送端和接收端记录随机重排前原始位置与重排后位置的对应关系;
[0064] 根据级联的原理,记录模块需要记录随机重排前原始位置与重排后位置的对应关 系,也就是说,现在的每一个位置上的值,在随机重排之前是出现在什么位置。另外,还需要 记录分块中每一个位置上的0、1值。
[0065] 例如:
[0066] 还是上面的例子,随机重排后我们记录下的对应位置就是
[0067]
[0068] 根据记录,我们可以知道目前密钥中的每一位,对应的是随机重排之前的哪一位。 这是在后面的回溯查错模块中需要的信息。
[0069] S4、计算奇偶校验和:发送端和接收端对各自的每个密钥块求奇偶校验和,并且发 送端将自身每个密钥块的奇偶校验和发送给接收端;求奇偶校验和的方法如下:
[0070] 求奇偶校验和的方法:将块内每一位相加,得到的结果是奇数记为1,偶数记为0。 等价于求块内的1的个数的奇偶性。
[0071] 求奇偶校验和的目的:由于cascade协议只能纠正一个块内的单个错误,因此如 果通信双方的奇偶校验结果相同,说明该块中存在偶数个错误,这样就不需要在这一块中 用二分的方法进行纠错了。
[0072] S5、检查每一块是否存在奇数个错误:接收端将自身的每个密钥块奇偶校验和与 其密钥块编号相同的发送端自身的密钥块奇偶校验和进行异或运算,如果结果为1,则接收 端的密钥块奇偶校验和与其密钥块编号相同的发送端的密钥块奇偶校验和不同,其存在奇 数个错误;
[0073] 将奇偶校验和不同的密钥块编号发给发送端,其中,接收端和发送端分别将这些 奇偶校验和不同的密钥块记作mismatch块;
[0074] S6、二分查找:发送端和接收端对各自所有mismatch块进行对块二分;
[0075] 若mismatch块中发送端和接收端对应某一密钥块中的密钥含有奇数个错误时, 将发送端和接收端的块内密钥平分成两个子块,把前一个子块的密钥作为S4的输入,运行 S4 ;
[0076] 若mismatch块中发送端和接收端对应某一密钥块中的密钥含有偶数个错误时, 不进行纠错;进一步,当mismatch块是分块之后第一次的奇偶校验和,则不进行纠错;当 mismatch块不是分块之后第一次的奇偶校验和,即前一次二分之后的前一半子块的奇偶校 验结果,则对前一次二分之后的后一半子块的密钥进行二分。
[0077] 不论上述哪种情况,若子块中的密钥长度为1,即定位到了误码出现的位置,将结 果输出到S7 ;
[0078] S7、纠错:根据S6得到的误码的准确位置信息,将接收端对应位的0或1值取反;
[0079] 下面是一个纠错的例子:
[0080] 如图6所示,显示了 3个块,Alice的3个块的奇偶校验和分别是l、0、l,Bob对应 的块的奇偶校验和是1、1、1。由此通信双方可以判断出来在第二个块那里出现了奇数个 误码。这时Alice和Bob同时对第二块密钥进行二分,计算出前一分块的奇偶校验和,由 Alice把自己的奇偶校验和传给Bob,Bob进行比较,发现二者都为1,因此误码发生在后一 分块中。于是Alice和Bob再将第二块密钥的后半部分再进行二分,计算出其中前一子块 的奇偶校验和,以此进行,直到定位到误码的准确位置为止。这样就可以把存在奇数个误码 的块中的一个误码纠正过来。
[0081] 当一轮纠错结束后,进行S8,回溯查错;
[0082] 伴随错误是指,在上一次的纠错过程中,某一块在发送端和接收端的奇偶校验和 相等,而在下一次的纠错过程中纠正了这个块的一个误码,则该块中一定存在另一个误码, 这个误码成为伴随错误。
[0083] 例如,我们假设在某一轮纠错结束后,Alice和Bob的对应块的内容如下:
[0084]
[0085] 上表中,Alice和Bob的对应块的奇偶校验和都为1,即都有奇数个1,这时无法纠 正错误。但是一旦在下一轮中纠正了第3位上的错误,将这一块的内容变成:
[0086]
[0087] 这时这一块就只有一个错误,Alice和Bob的奇偶校验和便不一样了,可以继续进 行纠错。
[0088] 通过S5找到本轮被纠正的误码的位置,再通过S3记录的历史记录信息,找到误码 在随机重排前的位置,此时,产生了新的有奇数个错误的块,在新的块中的误码记作伴随错 误;这是因为,在每一轮纠错完成后,所有的块的奇偶校验和在Alice和Bob都相同,而在下 一轮的纠错过程中,纠正了一个误码,则说明在同一块中一定存在另一个误码,以保证在上 一轮纠错的最后Alice和Bob的奇偶校验和相同。这时,利用历史记录信息,对这些新定位 出有误码的块再次进行二分查错,而不需要重新打乱重排,分块,纠错这一系列操作。找到 伴随错误之后,这个伴随错误有可能在其他轮中存在新的伴随错误,因此可以不断地回溯 进行纠错,即这一步可以不断迭代进行,直到在当前所有轮的所有记录中都找不到出错的 块,即当发送端和接收端在记录中全部轮数的所有的块下的奇偶校验都一致时停止,这时 根据纠错的调度方案,进入下一轮的纠错。
[0089] 下面是一个回溯纠错的例子:
[0090] 在图7所不的密钥中,一共存在5个误码,2个分布在第一块中,1个分布在第二块 中,2个分布在第三块中,红色代表误码。在第一轮纠错之后,由于cascade协议只能纠正奇 数个误码,因此在纠错结束时只能纠正第二块存在的一个误码。在进行了随机重排之后,继 续进行一轮纠错就可以再纠正2个错误。纠正之后,我们利用历史记录信息进行回溯,发现 这两个错误在上一轮纠错中,所在的块的奇偶校验和都是〇,因此两个错误所在的块一定各 存在一个伴随错误,对这两个块就可以再进行二分查错和纠错,纠正两个伴随错误,这样, 两轮就可以纠正完所有的误码。
[0091] 这样进行一轮之后,就可以纠正一些误码,下一轮只需要在上一轮的块长上乘以 5,然后再进行上述操作即可。由于Cascade协议和我们的改进,一轮纠正误码较为彻底,因 此,按照多次实验证实的结论,只需要进行4轮即可保证纠错成功,Alice端和Bob端都不 存在误码。
[0092] 为了体现本发明的效率,我们与传统Cascade算法进行了比较,如图8所示(其 中,横轴是误码率,纵轴是纠错效率),数据如下表所示:
[0093]
[0095] 通过数据可以看出,本发明与传统方法比较,大大提高了纠错效率。
【主权项】
1. 一种量子密钥分发后处理中对误码进行级联纠错的方法,包括: 发送端获取第一原始密钥和误码率估计值; 接收端获取第二原始密钥和误码率估计值; 发送端和接收端分别根据误码率估计值计算块长,确定各自的调度方案,进行多轮纠 错; 一轮纠错过程包括如下步骤: 51、 发送端产生随机种子并将随机种子发给接收端,发送端和接收端根据随机种子对 自身密钥进行随机重排; 52、 发送端和接收端根据调度方案中每一轮的密钥分块长度,将第一、二原始密钥进行 分块,并给第一、二原始密钥的每个密钥位按照相同顺序编号; 53、 发送端和接收端记录随机重排前原始位置与重排后位置的对应关系; 54、 发送端和接收端对各自的每个密钥块求奇偶校验和,并且发送端将自身每个密钥 块的奇偶校验和发送给接收端; 55、 接收端将自身的每个密钥块奇偶校验和与其密钥块编号相同的发送端自身的密钥 块奇偶校验和进行异或运算,如果结果为1,则接收端的密钥块奇偶校验和与其密钥块编号 相同的发送端的密钥块奇偶校验和不同,其存在奇数个错误; 将奇偶校验和不同的密钥块编号发给发送端,其中,接收端和发送端分别将这些奇偶 校验和不同的密钥块记作mismatch块; 56、 发送端和接收端对各自所有mismatch块进行对块二分: 若mismatch块中发送端和接收端对应某一密钥块中的密钥含有奇数个错误时,将发 送端和接收端的块内密钥平分成两个子块,把前一个子块的密钥作为S4的输入,运行S4 ; 若mismatch块中发送端和接收端对应某一密钥块中的密钥含有偶数个错误时,不进 行纠错; 若子块中的密钥长度为1,即定位到了误码出现的位置,将结果输出到S7 ; 57、 根据S6得到的误码的准确位置信息,将接收端对应位的0或1值取反; 其特征在于,还包括S8,回溯查错; 58、 通过S5找到本轮被纠正的误码的位置,再通过S3记录的历史记录信息,找到误码 在随机重排前的位置,此时,产生了新的有奇数个错误的块,在新的块中的误码记作伴随错 误;利用历史记录信息,对这些新定位出有误码的块再次进行二分查错;不断回溯纠错,当 发送端和接收端在记录中全部轮数的所有的块下的奇偶校验都一致时停止,这时根据纠错 的调度方案,进入下一轮的纠错; 其中,伴随错误是指,在上一次的纠错过程中,某一块在发送端和接收端的奇偶校验和 相等,而在下一次的纠错过程中纠正了这个块的一个误码,则该块中一定存在另一个误码, 这个误码成为伴随错误。2. 根据权利要求1所述纠错的方法,其特征在于,步骤S6中,若mismatch块中发送端 和接收端对应某一密钥块中的密钥含有偶数个错误时,当mismatch块是分块之后第一次 的奇偶校验和,则不进行纠错;当mismatch块不是分块之后第一次的奇偶校验和,即前一 次二分之后的前一半子块的奇偶校验结果,则对前一次二分之后的后一半子块的密钥进行 二分。
【文档编号】H04L9/08GK106027231SQ201510146098
【公开日】2016年10月12日
【申请日】2015年3月28日
【发明人】郭弘, 彭翔, 刘田
【申请人】北京大学