唐世彪, 程節(jié), 栗帥
(科大國盾量子技術(shù)股份有限公司, 安徽 合肥 230088)
量子密鑰分發(fā)(QKD)技術(shù)是近年來蓬勃發(fā)展的一種有效對抗量子計(jì)算機(jī)威脅的新型安全保密通信技術(shù),其通過傳輸量子態(tài)光脈沖信號(hào),使通信的雙方生成一對隨機(jī)的、安全的密鑰。經(jīng)過三十多年的發(fā)展,目前密鑰分發(fā)距離和速率不斷提升[1,2]。
基于誘騙態(tài)方案BB84 協(xié)議的QKD 系統(tǒng)中,要求發(fā)送端隨機(jī)發(fā)送4 種非正交基矢的量子態(tài),并且使用至少3 種強(qiáng)度進(jìn)行隨機(jī)調(diào)制[3]。QKD 系統(tǒng)的無條件安全性建立在理想的量子設(shè)備、經(jīng)典設(shè)備和隨機(jī)數(shù)的假設(shè)下,量子密鑰根源來自于量子密鑰分發(fā)過程中發(fā)光編碼使用的隨機(jī)數(shù),一個(gè)有缺陷的隨機(jī)數(shù)源可能會(huì)導(dǎo)致嚴(yán)重的安全漏洞[4,5]。因此,在QKD 系統(tǒng)中需要使用滿足均勻分布、不可預(yù)測、不可重復(fù)產(chǎn)生的真隨機(jī)數(shù)發(fā)生器(TRNG),其隨機(jī)數(shù)需要滿足相關(guān)隨機(jī)性檢測標(biāo)準(zhǔn)。
QKD 系統(tǒng)可采用經(jīng)典或量子隨機(jī)數(shù)發(fā)生器作為真隨機(jī)數(shù)源[6],隨著未來QKD 系統(tǒng)工作頻率越來越高,QKD 系統(tǒng)對真隨機(jī)數(shù)的速率需求大大增加。符合商密標(biāo)準(zhǔn)的經(jīng)典真隨機(jī)數(shù)發(fā)生器WNG-8 芯片單片可產(chǎn)生20 Mbps 隨機(jī)數(shù),通過多片疊加可以滿足較低發(fā)射頻率的QKD 系統(tǒng)使用需求,但對于GHz 頻率的高速Q(mào)KD 系統(tǒng)不太適用;量子隨機(jī)數(shù)發(fā)生器是依據(jù)量子力學(xué)的概率性設(shè)計(jì),需要較為復(fù)雜的源、探測系統(tǒng)、后處理裝置[7],成本高、集成度低,不便于高速Q(mào)KD 系統(tǒng)小型化、集成化研究。為此,本文詳細(xì)梳理了高速Q(mào)KD 所需的真隨機(jī)數(shù)源的設(shè)計(jì)需求,并設(shè)計(jì)實(shí)現(xiàn)了基于FPGA 的低成本、高集成度10 Gbps高速隨機(jī)數(shù)源,同時(shí)配套設(shè)計(jì)了10 Gbps 帶寬的實(shí)時(shí)全0 全1 自檢方案,保證了該隨機(jī)數(shù)源的可靠性。
誘騙態(tài)BB84 協(xié)議[8]是目前得到嚴(yán)格安全證明、使用最廣泛的實(shí)用化QKD 協(xié)議, 采用該協(xié)議的QKD 系統(tǒng),其基本結(jié)構(gòu)如圖1 所示。
圖1 誘騙態(tài)BB84 協(xié)議QKD 系統(tǒng)的基本結(jié)構(gòu)Fig.1 Basic structure of decoy BB84 protocol QKD system
在BB84 協(xié)議QKD 系統(tǒng)中,發(fā)送端處理器(通常為FPGA)從隨機(jī)數(shù)發(fā)生器實(shí)時(shí)獲取高速的隨機(jī)數(shù)序列,產(chǎn)生二維希爾伯特空間的4 種量子態(tài)|φ1〉、|φ2〉、|ψ1〉、|ψ2〉的數(shù)字編碼,定義二維希爾伯特空間兩組正交基分別記為Φ 與Ψ,其中Φ= {|φ1〉,|φ2〉}, Ψ = {|ψ1〉,|ψ2〉}。定義量子態(tài)|φ1〉和|ψ1〉與經(jīng)典比特“0”對應(yīng),量子態(tài)|φ2〉和|ψ1〉與經(jīng)典比特“1”對應(yīng),基Φ 與經(jīng)典比特“0”對應(yīng),基Ψ 與經(jīng)典比特“1”對應(yīng)。以誘騙態(tài)BB84 協(xié)議中常使用的三態(tài)協(xié)議為例,量子態(tài)光脈沖需具有3 種不同強(qiáng)度,分別為平均光子數(shù)為μ的信號(hào)態(tài)、平均光子數(shù)為ν1的誘騙態(tài)1、平均光子數(shù)為ν2的誘騙態(tài)2,信號(hào)態(tài)、誘騙態(tài)1、誘騙態(tài)2 光脈沖的強(qiáng)度應(yīng)符合0 ≤ν2<ν1<μ[9]。信號(hào)態(tài):誘騙態(tài)1:誘騙態(tài)2 按照一定的比例(例如6:1:1)進(jìn)行編碼并調(diào)制發(fā)射,該編碼比例通過對隨機(jī)數(shù)發(fā)生器輸入的隨機(jī)序列進(jìn)行二次編碼得到。
發(fā)送端處理器利用隨機(jī)數(shù)完成以上編碼后,QKD 系統(tǒng)再使用強(qiáng)度調(diào)制器、相位調(diào)制器等將以上編碼的數(shù)字信號(hào)加載到實(shí)際的光脈沖信號(hào)上,形成真正的不同強(qiáng)度的四種|φ1〉、|φ2〉、|ψ1〉、|ψ2〉量子態(tài)單光子信號(hào)。光信號(hào)經(jīng)光纖量子信道發(fā)送至Bob 端,之后Bob 端使用隨機(jī)選擇的測量基矢(即Φ 或Ψ)完成量子態(tài)的測量,并經(jīng)過兩端同步基矢比對過程,保留基矢一致的量子態(tài)對應(yīng)的密鑰信息,形成共享密鑰[10]。
為實(shí)現(xiàn)以上數(shù)字編碼需求,以強(qiáng)度比例6:1:1 為例,設(shè)計(jì)采用3 bits 隨機(jī)數(shù)編碼強(qiáng)度信息、2 bits 隨機(jī)數(shù)編碼量子態(tài)信息,實(shí)現(xiàn)1:1:1:1 的量子態(tài)比例,因此總計(jì)使用5 bits 隨機(jī)數(shù)生成一個(gè)量子態(tài)的數(shù)字編碼,具體對應(yīng)關(guān)系如圖2 所示。
圖2 隨機(jī)發(fā)光編碼方案Fig.2 Random light encode scheme
基于誘騙態(tài)BB84 協(xié)議的QKD 系統(tǒng),由于發(fā)送端發(fā)射的單光子量子態(tài)光信號(hào)強(qiáng)度很弱,而光纖量子信道傳輸每十公里衰減近2 dB,接收端單光子探測器的探測效率也只有10%左右,因此每個(gè)量子態(tài)信號(hào)被探測到的概率極低,導(dǎo)致長距離后量子密鑰生成速率極低[9],這極大地限制了QKD 系統(tǒng)的工作距離。為此,國際、國內(nèi)普遍采用的一種應(yīng)對方式是提升量子態(tài)發(fā)射頻率,而提升發(fā)射頻率無疑會(huì)成比例提升隨機(jī)數(shù)源的速率及可靠性要求。以2 GHz 發(fā)射頻率為例,按照以上發(fā)光數(shù)字編碼方式,需要5 倍速率即10 Gbps 的實(shí)時(shí)生成隨機(jī)數(shù)。
為實(shí)時(shí)生成如此高速率的隨機(jī)數(shù),并實(shí)時(shí)進(jìn)行發(fā)光數(shù)字編碼,所提出設(shè)計(jì)采用了基于FPGA 平臺(tái)的實(shí)現(xiàn)方案。隨機(jī)數(shù)發(fā)生器陣列每個(gè)時(shí)鐘周期生成100 bits 隨機(jī)數(shù),采用100 bits 的自定義并行總線輸出,再經(jīng)100 bits 輸入位寬的游程檢測模塊檢測過濾,檢測通過的隨機(jī)數(shù)仍然通過100 bits 自定義總線輸出給后級(jí)發(fā)光數(shù)字編碼模塊進(jìn)行20 路并行發(fā)光編碼處理,充分利用FPGA 平臺(tái)的并行處理能力,在100 MHz運(yùn)行頻率下,即可完成2 GHz 發(fā)射頻率的QKD 系統(tǒng)隨機(jī)數(shù)生成、自檢、發(fā)光數(shù)字編碼過程,整體結(jié)構(gòu)如圖3 所示。
圖3 QKD 系統(tǒng)隨機(jī)發(fā)光編碼數(shù)據(jù)處理結(jié)構(gòu)Fig.3 The data processing structure of random light encoding in QKD system
所提出基于FPGA 平臺(tái)的隨機(jī)數(shù)源設(shè)計(jì)方案采用相位抖動(dòng)原理,是一種基于物理隨機(jī)源電路的真隨機(jī)數(shù)發(fā)生器方案[6],可以在數(shù)字電路中方便地設(shè)計(jì)與實(shí)現(xiàn),具有低成本、高集成度的優(yōu)點(diǎn)。
圖4 相位抖動(dòng)隨機(jī)數(shù)發(fā)生器基本原理Fig.4 Basic principle of phase jitter TRNG
圖4 為單個(gè)振蕩器生成隨機(jī)數(shù)的基本原理,在FPGA 中采用組合邏輯實(shí)現(xiàn)的3 個(gè)取反邏輯單元搭建高頻大抖動(dòng)振蕩器,該振蕩器輸出的帶抖動(dòng)的信號(hào)在FPGA 中用固定的低頻采樣時(shí)鐘通過D 觸發(fā)器采樣,即可在D 觸發(fā)器輸出端得到與低頻采樣時(shí)鐘速率一致的隨機(jī)序列。
單個(gè)振蕩器的采樣輸出的每比特隨機(jī)數(shù)通常沒有足夠的平均熵,為提升輸出隨機(jī)數(shù)每比特的平均熵,可以通過增加后處理算法或者多個(gè)振蕩器疊加的方法來解決??紤]到增加后數(shù)據(jù)處理算法將降低隨機(jī)數(shù)輸出速率,此處通過采用多個(gè)振蕩器疊加的方法來提升隨機(jī)數(shù)每比特的平均熵。依據(jù)Schellekens等[11]的分析結(jié)論,采用3 個(gè)反相器搭建單個(gè)振蕩器,使得相位抖動(dòng)在4%的情況下,不少于107 個(gè)振蕩器疊加可以使得輸出的隨機(jī)數(shù)比特滿足平均熵要求,置信度達(dá)到99%。為此,所提出設(shè)計(jì)采用128 個(gè)振蕩器疊加,以保證輸出的隨機(jī)數(shù)平均熵達(dá)標(biāo)。
小朋友并非天生這么“聽話”的。我們見到凱特時(shí)已經(jīng)非常good manner了,但4歲弟弟安祖卻是一個(gè)非常調(diào)皮搗亂的小朋友。因?yàn)樵?jīng)患過耳疾,所以開化有點(diǎn)晚,經(jīng)常亂叫、大哭和扔?xùn)|西。對安祖影響到我家的問題,家長都會(huì)當(dāng)著安祖的面及時(shí)招呼和道歉。時(shí)不時(shí)我家圍墻會(huì)伸出她媽媽的頭:“不好意思,安祖把×××扔到你家院子了?!被蛘咚职郑骸安缓靡馑?,安祖把泥巴扔你家墻上了?!保ㄎ覀冞€根本沒看到,為這泥巴他媽媽還特意送了一棵番茄樹給蠻蠻。)這時(shí)我們都會(huì)心一笑,以后見到扔過來的東西,直接扔回去就好了。
圖5 振蕩器陣列處理網(wǎng)絡(luò)Fig.5 Ring oscillator array processing network
圖5 為128 個(gè)振蕩器陣列及多層異或觸發(fā)器網(wǎng)絡(luò)結(jié)構(gòu)圖,第一級(jí)振蕩器與異或觸發(fā)器網(wǎng)絡(luò)采用8 個(gè)振蕩器、9 個(gè)D 觸發(fā)器、7 個(gè)異或門實(shí)現(xiàn),16 個(gè)一級(jí)振蕩器與異或觸發(fā)器網(wǎng)絡(luò)再經(jīng)過二級(jí)異或和D 觸發(fā)器采樣,最終輸出平均熵合格的隨機(jī)數(shù)。該網(wǎng)絡(luò)中采樣時(shí)鐘設(shè)置為100 MHz,單個(gè)二級(jí)振蕩器網(wǎng)絡(luò)隨機(jī)數(shù)生成速率為100 Mbps。
以該振蕩器網(wǎng)絡(luò)為基礎(chǔ)單元,在FPGA 芯片內(nèi)部并行實(shí)現(xiàn)100 路,即得到需求分析中所需的100 路100 Mbps 速率的真隨機(jī)數(shù)發(fā)生器,總計(jì)輸出帶寬10 Gbps。
為在隨機(jī)數(shù)發(fā)生器出現(xiàn)故障、隨機(jī)數(shù)生成功能失效時(shí)及時(shí)發(fā)現(xiàn),在隨機(jī)數(shù)發(fā)生器后級(jí)增加了一個(gè)10 Gbps 處理帶寬的自檢模塊。該模塊采用全0 全1 檢測方法,當(dāng)生成的隨機(jī)數(shù)出現(xiàn)連續(xù)的全0 或全1序列,且長度達(dá)到設(shè)定閾值N(參數(shù)可配)時(shí),判定當(dāng)前隨機(jī)數(shù)發(fā)生器失效,輸出報(bào)警信號(hào),停止隨機(jī)數(shù)輸出,并重啟隨機(jī)數(shù)發(fā)生器模塊。該自檢方案來自國際通用的EAL 信息安全產(chǎn)品測評(píng)認(rèn)證中所使用的《AIS31-A proposal for: Functionality classes and evaluation methodology for true(physical)random number generators》真隨機(jī)數(shù)檢測標(biāo)準(zhǔn)E.5 小節(jié)。
考慮到QKD 系統(tǒng)獲取隨機(jī)數(shù)進(jìn)行隨機(jī)發(fā)光編碼時(shí),每個(gè)時(shí)鐘周期會(huì)一次性獲取100 bits,再按照相鄰5 bits 一組分組進(jìn)行編碼處理,因此不能單獨(dú)對100 路隨機(jī)數(shù)發(fā)生器進(jìn)行全0 全1 檢測,需要對每個(gè)時(shí)鐘周期的100 bits 進(jìn)行并串轉(zhuǎn)換,之后對該串行數(shù)據(jù)實(shí)時(shí)全0 全1 統(tǒng)計(jì)。如果直接對并串轉(zhuǎn)換后的10 Gbps 隨機(jī)數(shù)進(jìn)行全0 全1 統(tǒng)計(jì),FPGA 工作至少需要10 GHz,而通常FPGA 工作頻率在200 MHz 以內(nèi),顯然無法完成該統(tǒng)計(jì)需求。為此,設(shè)計(jì)如圖6 所示的電路結(jié)構(gòu),充分利用FPGA 的并行處理和流水線處理優(yōu)勢,在完成并串轉(zhuǎn)換的同時(shí),對轉(zhuǎn)換后的數(shù)據(jù)完成相鄰比特的全0 全1 特征統(tǒng)計(jì),并在全0 或全1 長度超出設(shè)定閾值時(shí)觸發(fā)報(bào)警信號(hào)。
圖6 自檢模塊處理數(shù)據(jù)流Fig.6 Data flow of self-check module processing
圖6 為自檢模塊的處理過程數(shù)據(jù)流示意圖,最左側(cè)為100 路100 Mbps 的真隨機(jī)數(shù)陣列,每個(gè)時(shí)鐘周期輸出100 bits 隨機(jī)數(shù)rn-0 ~rn-99。中間為100 組串聯(lián)的“寄存器緩存+統(tǒng)計(jì)單元”,每個(gè)單元內(nèi)置一組100 bits 的寄存器,能夠?qū)崿F(xiàn)“接收鎖存上一級(jí)單元統(tǒng)計(jì)結(jié)果+統(tǒng)計(jì)接收來的隨機(jī)數(shù)最低位1 bit 隨機(jī)數(shù)的01 特性+移位丟棄剛統(tǒng)計(jì)的最低位1 bit+更新01 統(tǒng)計(jì)結(jié)果并輸出給下級(jí)單元+連續(xù)0 或1 超過閾值N即報(bào)警”的功能。最右側(cè)為自檢異常信號(hào)的匯總模塊。
每個(gè)時(shí)鐘周期生成的100 bits 隨機(jī)數(shù),每經(jīng)過一個(gè)時(shí)鐘周期就會(huì)往右整體搬移一次,同時(shí)完成最低1 bit 的01 特性統(tǒng)計(jì)+移位拋棄最低1 bit 的操作。經(jīng)過100 個(gè)時(shí)鐘周期后,該100 bits 隨機(jī)數(shù)也就流經(jīng)100 個(gè)統(tǒng)計(jì)單元,從而得到了該組100 bits 隨機(jī)數(shù)的全0 全1 統(tǒng)計(jì)特性。
在檢測過程中如果在哪一級(jí)統(tǒng)計(jì)單元發(fā)現(xiàn)當(dāng)前緩存的這組100 bits 隨機(jī)數(shù)已經(jīng)連續(xù)出現(xiàn)N個(gè)全0或全1,則觸發(fā)報(bào)警信號(hào),該信號(hào)統(tǒng)一發(fā)送到錯(cuò)誤匯總子模塊,由該模塊完成告警信號(hào)的整體輸出。
按照以上隨機(jī)數(shù)發(fā)生器設(shè)計(jì)實(shí)現(xiàn)方案,在Altera Cyclone IV EP4CE115 型號(hào)的FPGA 芯片上完成開發(fā)編譯,根據(jù)編譯結(jié)果,單個(gè)100 Mbps 的振蕩器網(wǎng)絡(luò)基礎(chǔ)單元消耗245 個(gè)LUT 資源,完整的10 Gbps 隨機(jī)數(shù)發(fā)生器消耗25687 個(gè)LUT 資源,占整片F(xiàn)PGA 資源量的22.4%,FPGA 資源裕量充足。
按照《GM/T-0005-2012 隨機(jī)性檢測規(guī)范》標(biāo)準(zhǔn)要求對該隨機(jī)數(shù)發(fā)生器的輸出進(jìn)行隨機(jī)性檢測,采集4 組輸出數(shù)據(jù)進(jìn)行測試,每組大小為1000×1000,000 bits,每個(gè)檢測項(xiàng)按照通過比例(Pass rate)大于等于0.981 測試通過,詳細(xì)結(jié)果如表1。
表1 隨機(jī)性測試結(jié)果Table 1 Random test results
針對以上自檢模塊設(shè)計(jì)實(shí)現(xiàn)方案,搭建FPGA 仿真驗(yàn)證平臺(tái),設(shè)置全0 或全1 的異常觸發(fā)門限為20,構(gòu)造測試用仿真數(shù)據(jù)作為輸入開始仿真,模塊數(shù)據(jù)處理過程的仿真波形如圖7。從仿真波形可以看出,輸入到unit1 統(tǒng)計(jì)單元的第1 組100 bits 仿真數(shù)據(jù)trng-data-q[99:0]為0xf-fffc-0000-0000-0000-0000-5588,該數(shù)據(jù)中間有超過64 bits 的連續(xù)全0, 以便觸發(fā)自檢模塊的檢測機(jī)制。unit-n-new-cnt[8:0] 寄存器是第n級(jí)統(tǒng)計(jì)單元的輸出, 左側(cè)最高位用于指示統(tǒng)計(jì)的是全0 還是全1, 低8 bits 用于表示全0 或全1 的長度。從unit 1- >unit 2- >unit 3- >unit 4 的new-cnt[8:0] 統(tǒng)計(jì)結(jié)果可以看到, 前3 級(jí)檢測到輸入的0xf-fffc-0000-0000-0000-0000-5588 數(shù)據(jù)最低3 位連續(xù)為比特0, 到第4 位變成了比特1, 因此unit-4-new-cnt[8:0]變?yōu)?x101,表明當(dāng)前開始檢測全1,且目前發(fā)現(xiàn)連續(xù)比特1 的數(shù)量為1 個(gè)。
圖8 為自檢模塊的仿真結(jié)果,顯示的是第31~35 級(jí)檢測單元的自檢異常信號(hào)觸發(fā)情況。隨著逐級(jí)檢測持續(xù)推進(jìn),由于0xf-fffc-0000-0000-0000-0000-5588 數(shù)據(jù)中從倒數(shù)第16 比特開始一直為0,當(dāng)?shù)竭_(dá)unit35 時(shí),已經(jīng)連續(xù)出現(xiàn)20 個(gè)比特0,此時(shí)unit-35-new-cnt[8:0]寄存器也顯示為0x014,即檢測到連續(xù)20個(gè)比特0 的現(xiàn)象,進(jìn)而觸發(fā)拉高了unit-35-data-error 錯(cuò)誤信號(hào)。該error 信號(hào)進(jìn)入到錯(cuò)誤匯總模塊,進(jìn)而觸發(fā)拉高了對外輸出的報(bào)警信號(hào)data-error。由此可見,該自檢模塊成功完成了自檢功能,且實(shí)現(xiàn)了設(shè)計(jì)中的流水線處理目標(biāo),能夠滿足10 Gbps 隨機(jī)數(shù)的實(shí)時(shí)自檢需求。
通過以上測試驗(yàn)證,確認(rèn)所設(shè)計(jì)實(shí)現(xiàn)的隨機(jī)數(shù)源能夠產(chǎn)生滿足QKD 系統(tǒng)所需的高速隨機(jī)數(shù),且隨機(jī)性符合《GM/T-0005-2012 隨機(jī)性檢測規(guī)范》。此外,配套設(shè)計(jì)實(shí)現(xiàn)的自檢模塊能夠滿足10 Gbps 隨機(jī)數(shù)源的全0 或全1 實(shí)時(shí)自檢需求。
圖7 自檢模塊仿真-流水線處理Fig.7 Simulation results of self check module-pipeline processing
圖8 自檢模塊仿真-觸發(fā)異常信號(hào)Fig.8 Simulation results of self check module-trigger error
詳細(xì)介紹了一種用于高速Q(mào)KD 系統(tǒng)的隨機(jī)數(shù)源及實(shí)時(shí)自檢方案,其中隨機(jī)數(shù)源采用相位抖動(dòng)原理實(shí)現(xiàn), 通過疊加128 個(gè)振蕩器實(shí)現(xiàn)單個(gè)隨機(jī)數(shù)源, 再并行例化產(chǎn)生10 Gbps 高速隨機(jī)數(shù), 數(shù)據(jù)符合《GM/T-0005-2012 隨機(jī)性檢測規(guī)范》; 隨后依據(jù)QKD 系統(tǒng)對隨機(jī)數(shù)的獨(dú)特使用需求, 設(shè)計(jì)實(shí)現(xiàn)了10 Gbps 處理帶寬的實(shí)時(shí)全0 全1 自檢模塊,保障了QKD 系統(tǒng)所使用高速隨機(jī)數(shù)的可靠性,該方案能夠滿足2 GHz 以上發(fā)射頻率的高速Q(mào)KD 系統(tǒng)隨機(jī)數(shù)使用需求。
相較于多片商用隨機(jī)數(shù)芯片疊加方案、量子隨機(jī)數(shù)發(fā)生器方案,所提出方案的集成度與可靠性更高,成本更低,且所實(shí)現(xiàn)的隨機(jī)數(shù)源和自檢方案方便升級(jí)擴(kuò)展,有望支持更高速Q(mào)KD 系統(tǒng)的研究工作。