張秀再,劉光杰,張經(jīng)緯
(南京信息工程大學(xué)a.電子與信息工程學(xué)院;b.江蘇省大氣環(huán)境與裝備技術(shù)協(xié)同創(chuàng)新中心,南京 210044)
量子加密起源于1969 年美國(guó)科學(xué)家Wiesner[1]提出的Conjugate Coding,但由于當(dāng)時(shí)技術(shù)的局限性,這一突破性想法沒(méi)有得到人們的關(guān)注。直到1984 年Bennett等[2]提出的第一個(gè)量子密鑰分發(fā)協(xié)議(QKD),即著名的BB84 協(xié)議,才標(biāo)志著量子加密的研究真正開(kāi)始。目前,關(guān)于量子加密在理論與實(shí)驗(yàn)方面都取得了大量研究成果。1991 年Ekert[3]提出的E91 協(xié)議和1992 年Bennett[4]提出的B92 協(xié)議,都已被證明量子加密的絕對(duì)安全性。FPGA 綜合設(shè)計(jì)實(shí)驗(yàn)是電子信息、自動(dòng)化等工科專業(yè)的重要綜合實(shí)踐課程,具有綜合性、實(shí)踐性和創(chuàng)新性。而現(xiàn)有的實(shí)驗(yàn)教學(xué)平臺(tái)一般只要求完成單項(xiàng)內(nèi)容的驗(yàn)證實(shí)驗(yàn),無(wú)法綜合應(yīng)用所學(xué)知識(shí)解決實(shí)際工程問(wèn)題,其他綜合設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目的綜合性、實(shí)踐性不強(qiáng),難以滿足創(chuàng)新性設(shè)計(jì),導(dǎo)致學(xué)生自主開(kāi)展實(shí)驗(yàn)的積極性不足,綜合設(shè)計(jì)的獲得感較低,難以提升學(xué)生的工程能力和創(chuàng)新能力。因此,引入實(shí)用的自主設(shè)計(jì)類教學(xué)實(shí)驗(yàn),提升FPGA 綜合設(shè)計(jì)實(shí)驗(yàn)課程的高階性、創(chuàng)新性和挑戰(zhàn)度,培養(yǎng)學(xué)生創(chuàng)新思維是教學(xué)改革的一個(gè)重要方向。
本文在FPGA綜合設(shè)計(jì)實(shí)驗(yàn)課程教學(xué)項(xiàng)目中,針對(duì)量子加密技術(shù)在視頻通信中的應(yīng)用,基于XILINX公司的ZYNQ架構(gòu)、以BB84 協(xié)議為核心加密算法,設(shè)計(jì)了一種對(duì)視頻數(shù)據(jù)流的視頻采集、信息加密、信道傳輸、信息解密、視頻播放功能的量子加密視頻通信教學(xué)實(shí)驗(yàn)設(shè)計(jì),增強(qiáng)了FPGA 綜合設(shè)計(jì)實(shí)驗(yàn)教學(xué)的實(shí)用性和挑戰(zhàn)度,激發(fā)了學(xué)生的學(xué)習(xí)興趣和自主能動(dòng)性,提升綜合實(shí)踐教學(xué)的成效。
量子加密視頻通信系統(tǒng)的整體結(jié)構(gòu)如圖1 所示,主要包括量子密鑰分配單元(QKD)與視頻圖像處理單元兩部分。
圖1 量子加密視頻通信教學(xué)實(shí)驗(yàn)系統(tǒng)結(jié)構(gòu)框圖
量子密鑰分配單元[5]包括隨機(jī)數(shù)產(chǎn)生器、Alice算法模塊與Bob 算法模塊3 部分。其中Alice 與Bob 之間存在量子信道與傳統(tǒng)公開(kāi)信道,兩信道之間相互隔離互不干擾。Alice與Bob引入了后處理算法,包括數(shù)據(jù)篩選、改進(jìn)型二分法數(shù)據(jù)協(xié)調(diào)、Hash矩陣密性增強(qiáng)3個(gè)步驟。通過(guò)一個(gè)基于梅森旋轉(zhuǎn)算法的隨機(jī)數(shù)產(chǎn)生器為Alice與Bob提供所需要的隨機(jī)數(shù)。Bob 最后將密性增強(qiáng)壓縮后的密鑰傳給圖像加密模塊。
視頻圖像處理單元[6]包括圖像采集(OV7670)、圖像加密與圖像緩存(256M SDRAM)3 個(gè)模塊。視頻信息由圖像采集模塊獲取,即通過(guò)攝像頭OV7670 進(jìn)行圖像采集,且在1 s內(nèi)最高可向FPGA 輸入30 幀圖像。將圖像數(shù)據(jù)與QKD 系統(tǒng)產(chǎn)生的密鑰進(jìn)行異或運(yùn)算處理,然后把加密完成的視頻流信息存放到FPGA內(nèi)部、容量大小為256 MB 的SDRAM 圖像緩存器中。圖像緩存模塊提取出部分?jǐn)?shù)據(jù)后,通過(guò)傳統(tǒng)公開(kāi)信道輸送至發(fā)送方Alice。視頻信息經(jīng)圖像顯示模塊解密后,由內(nèi)部的VGA驅(qū)動(dòng)電路驅(qū)動(dòng),并通過(guò)VGA傳輸線在用戶屏幕上顯示。
對(duì)量子加密實(shí)驗(yàn)系統(tǒng)來(lái)說(shuō),隨機(jī)數(shù)的好壞是影響整體性能的關(guān)鍵[7]。本實(shí)驗(yàn)設(shè)計(jì)了一種新的基于梅森旋轉(zhuǎn)算法的隨機(jī)數(shù)產(chǎn)生模塊,該模塊最長(zhǎng)隨機(jī)周期取自一個(gè)梅森素?cái)?shù)219937-1,且較傳統(tǒng)反饋移位寄存器而言,可以保證隨機(jī)數(shù)是均勻分布的。
隨機(jī)數(shù)產(chǎn)生模塊的狀態(tài)轉(zhuǎn)移過(guò)程如圖2 所示。
圖2 隨機(jī)數(shù)產(chǎn)生模塊的狀態(tài)轉(zhuǎn)移圖
idle(空閑)當(dāng)完成初始化時(shí),轉(zhuǎn)到狀態(tài)1。
狀態(tài)1根據(jù)SEED 或上一輪運(yùn)算結(jié)果對(duì)寄存器數(shù)組[0:623]依次進(jìn)行初始賦值,判斷此時(shí)運(yùn)算輪數(shù)%(模運(yùn)算),624若為0則轉(zhuǎn)向狀態(tài)2,否則轉(zhuǎn)向狀態(tài)5。
狀態(tài)2操作單口RAM的RW線為讀,空閑一個(gè)周期讀入此時(shí)為i的寄存器數(shù)組的值,轉(zhuǎn)向狀態(tài)3。
狀態(tài)3空閑一個(gè)周期等待RAM 數(shù)據(jù)輸出穩(wěn)定后,讀入一個(gè)名為(i+1)%624 寄存器數(shù)組的值,轉(zhuǎn)向狀態(tài)4。
狀態(tài)4空閑一個(gè)周期等待RAM 數(shù)據(jù)輸出穩(wěn)定后,讀入一個(gè)名為(i+397)%624 寄存器數(shù)組的值,依次將i、(i+1)%624、(i+397)%624 按位計(jì)算且進(jìn)行右移操作,設(shè)置操作單口RAM的RW線為寫(xiě),將計(jì)算值寫(xiě)入RAM中,轉(zhuǎn)向狀態(tài)5。
狀態(tài)5如圖3 波形所示,操作單口RAM 的RW線為讀,讀出名為index 寄存器數(shù)組的值,完成梅森旋轉(zhuǎn)運(yùn)算后,將result寫(xiě)入RAM并拉高ready,轉(zhuǎn)向空閑狀態(tài),等待下一輪計(jì)算。
圖3 隨機(jī)數(shù)產(chǎn)生模塊的波形
本實(shí)驗(yàn)采用了一種改進(jìn)型二分法作為數(shù)據(jù)協(xié)調(diào)算法,該算法能在保證數(shù)據(jù)安全性的前提下,保留更多的有效數(shù)據(jù),并且比一般算法運(yùn)算速度更快,節(jié)約通信資源;密性增強(qiáng)具體方案如下:先由Matlab 生成一族長(zhǎng)度固定由0/1 元素構(gòu)成的HASH 矩陣族,然后將協(xié)調(diào)后的數(shù)據(jù)經(jīng)由HASH 矩陣壓縮。這樣可盡量減少竊聽(tīng)方所得到的密鑰信息。
量子密鑰分配單元的狀態(tài)轉(zhuǎn)移過(guò)程如圖4 所示。
圖4 量子密鑰分配單元的狀態(tài)轉(zhuǎn)移圖
狀態(tài)1初試化各個(gè)寄存器,并由Alice(發(fā)送方)接收qbit(量子比特),Bob(接收方)接收mbase(測(cè)量基)。
狀態(tài)2Bob接收來(lái)自Alice 的量子比特流,并存儲(chǔ)至寄存器。
狀態(tài)3Alice接收Bob的小部分(25%)mbase。
狀態(tài)4Alice與Bob公開(kāi)計(jì)算部分mbase與qbit的和運(yùn)算,并在公共信道對(duì)比誤碼率,超出閾值則說(shuō)明存在Eve(竊聽(tīng)方),轉(zhuǎn)到狀態(tài)1 結(jié)束此次通信。
狀態(tài)5此次通信不存在Eve,則Alice 接收Bob剩余mbase。
狀態(tài)6Alice與Bob計(jì)算出所有qbit與mbase并配對(duì)基底,不一致則轉(zhuǎn)到狀態(tài)1。
狀態(tài)7、8、9、10多輪改進(jìn)法糾錯(cuò),每輪結(jié)束檢查有效數(shù)值,若低于閾值則轉(zhuǎn)到狀態(tài)1。
狀態(tài)11將數(shù)據(jù)協(xié)調(diào)后的若干組數(shù)據(jù)依次打入HASH矩陣中,等待壓縮后的數(shù)值。
狀態(tài)12如圖5 所示將密鑰key 輸出,并拉高數(shù)據(jù)有效位valid,轉(zhuǎn)到狀態(tài)1 等待下一輪計(jì)算。
圖5 量子密鑰分配單元的波形
量子加密視頻通信系統(tǒng)采用自頂向下的設(shè)計(jì)思路,在Vivado 2017.2 平臺(tái)上利用Verilog 語(yǔ)言設(shè)計(jì)各個(gè)模塊,并將各個(gè)模塊組合封裝。頂層文件在Vivado工具綜合實(shí)現(xiàn)生成FPGA 的硬件資源消耗情況,如表1所示。從表1 可知,F(xiàn)PGA資源利用率最高的是LUT與BUFG,資源利用率為13%,可見(jiàn)量子加密算法易移植于其他系列的FPGA 與嵌入式系統(tǒng),方便部署于復(fù)雜系統(tǒng)上,以此保護(hù)人們的信息不受侵犯。
表1 FPGA硬件資源消耗表
圖6 所示為在3 種不同狀態(tài)下正常顯示、加密之后與發(fā)現(xiàn)竊聽(tīng)行為后的系統(tǒng)實(shí)驗(yàn)測(cè)試結(jié)果。可見(jiàn),實(shí)驗(yàn)設(shè)計(jì)的視頻通信系統(tǒng)對(duì)數(shù)據(jù)的加密具有實(shí)時(shí)性和一次一密性。加密每一幀圖像所用的密鑰流都處于無(wú)規(guī)律地動(dòng)態(tài)變化中,根據(jù)量子力學(xué)的特性[5],這種加密方式可及時(shí)發(fā)現(xiàn)竊聽(tīng)行為[10],理論上具有絕對(duì)安全性。
圖6 加密實(shí)驗(yàn)測(cè)試結(jié)果對(duì)比
根據(jù)實(shí)驗(yàn)系統(tǒng)測(cè)試結(jié)果,從密鑰靈敏度、像素分布關(guān)系等方面對(duì)原始圖像與加密圖像進(jìn)行對(duì)比,以驗(yàn)證量子加密算法的安全性。
3.2.1 密鑰靈敏度
密鑰靈敏度即密鑰和密文圖像的關(guān)聯(lián)度,密鑰靈敏度越高,兩者關(guān)聯(lián)程度就越強(qiáng),被破解的可能性也越?。?]。在密碼學(xué)中,可用原明文圖像與密文圖像的均方差MSE表示密鑰靈敏度
由于明文圖像為彩色,均方差MES可用R、G和B三通道均方差表示為:
密鑰完全正確,則明文圖像與密文圖像均方差MSE為0,梅森旋轉(zhuǎn)算法對(duì)初始值敏感。因此,當(dāng)一幀圖像的量子密鑰全部正確,圖像為圖7(a)所示;若錯(cuò)誤密鑰誤差小于2-20,解密依舊失敗,解密圖像如圖7(b)所示。
圖7 解密圖像
由圖7 所示可知,實(shí)驗(yàn)系統(tǒng)密鑰靈敏度高,密鑰細(xì)微的變化將導(dǎo)致解密結(jié)果發(fā)生很大變化,解密出的錯(cuò)誤圖像也不會(huì)顯示出任何有效信息,安全性高[9]。
3.2.2 灰度直方圖分析
灰度直方圖由Matlab通過(guò)將灰度分級(jí)成[0:255]顯示圖像像素在每個(gè)灰度級(jí)的分布情況,密文圖像的灰度直方圖和原始圖像的差別越大,則加密效果越好[10]。
圖8 和圖9 所示依次給出了原始明文圖像灰度直方圖與加密圖像灰度直方圖??梢悦黠@看出同一個(gè)圖像的R、G、B三通道與灰度圖的灰度分布基本一致,但圖像加密前與加密后的灰度發(fā)生了巨大變化,且密文圖像的灰度直方圖灰度變化較為平緩,明文圖像灰度直方圖灰度變化十分陡峭,因此密文圖像有效地隱藏了明文圖像的有效信息[11]。
圖8 原始明文圖像灰度直方圖
圖9 加密圖像灰度直方圖
3.2.3 相鄰像素相關(guān)性
實(shí)驗(yàn)的一幀明文圖像如圖10(a)所示,密文圖像如圖10(b)所示。一幅明文圖像每個(gè)像素點(diǎn)都與相鄰像素點(diǎn)有巨大的關(guān)聯(lián)性,關(guān)聯(lián)系數(shù)>0.99,而只有使加密系統(tǒng)加密后的密文圖像素點(diǎn)與相鄰的相關(guān)性盡可能小,才能保證信息的安全[12]。相鄰像素相關(guān)系數(shù)表示為[13]:
圖10 相鄰像素相關(guān)性實(shí)驗(yàn)
式中:D(x)、D(y)分別為對(duì)應(yīng)像素的方差;cov(x,y)為協(xié)方差。
由式(3)得出R、G、B 三通道和灰度圖相鄰像素相關(guān)系數(shù),如表2 所示。原明文圖像與密文圖像相鄰像素的水平、垂直和對(duì)角相關(guān)分布圖分別如圖11~13所示。
表2 原始圖像與密文圖像的相關(guān)系數(shù)表
圖11 水平相鄰像素相關(guān)分布圖
圖12 垂直相鄰像素相關(guān)分布圖
圖13 對(duì)角相鄰像素相關(guān)分布圖
由表2 數(shù)據(jù)和圖11~13 可知,原明文圖像的各個(gè)像素點(diǎn)與各自相鄰像素點(diǎn)基本呈線性相關(guān),水平、垂直和對(duì)角相關(guān)系數(shù)均>0.998,而加密后的密文圖像的水平、垂直和對(duì)角相關(guān)系數(shù)均<0.5。因此,加密前后圖像關(guān)聯(lián)性發(fā)生了巨大改變[14]。
3.2.4 隨機(jī)性測(cè)試
利用NIST的SP800-22 標(biāo)準(zhǔn)對(duì)密文圖像做一個(gè)系統(tǒng)性偽隨機(jī)測(cè)試[15]。于Ubuntu16.4 系統(tǒng)下,采用NIST官方提供的sts-2.2 軟件包對(duì)序列長(zhǎng)度3 ×106位的隨機(jī)數(shù)列進(jìn)行測(cè)量,最終測(cè)試結(jié)果如表3 所示[16]。根據(jù)標(biāo)準(zhǔn),若測(cè)試結(jié)果的P-value 值大于0.1,則該項(xiàng)測(cè)試顯示success,否則顯示failure。表3 顯示所有測(cè)試的P-value的值皆大于0.1,因此實(shí)驗(yàn)設(shè)計(jì)的加密視頻通信系統(tǒng)的安全性滿足NIST SP800-22 標(biāo)準(zhǔn),具有很強(qiáng)的保密性。
表3 NIST SP800-22 測(cè)試結(jié)果
在FPGA綜合設(shè)計(jì)實(shí)驗(yàn)課程教學(xué)中,結(jié)合量子加密算法與視頻采集顯示技術(shù),設(shè)計(jì)了一種基于FPGA的量子加密視頻通信教學(xué)實(shí)驗(yàn)系統(tǒng)。實(shí)驗(yàn)測(cè)試結(jié)果表明,基于FPGA硬件平臺(tái)上,優(yōu)化量子加密算法可有效實(shí)現(xiàn)加密視頻通信,且能夠積極引導(dǎo)學(xué)生勇于開(kāi)展高階性、創(chuàng)新性和挑戰(zhàn)度的綜合設(shè)計(jì)實(shí)驗(yàn),可以極大地豐富綜合設(shè)計(jì)實(shí)驗(yàn)的教學(xué)內(nèi)容,提升學(xué)生的自主實(shí)驗(yàn)興趣和工程創(chuàng)造能力。