基于fpga的篩選模塊及篩選方法
【專利摘要】基于FPGA的篩選模塊及篩選方法,屬于量子保密通信領域。解決現有篩選模塊及篩選方法的密鑰生成速率的實時性差和數據交互量大造成的存儲壓力大的問題。本發明通過游程長度編碼模塊計算相鄰兩個均滿足條件“K0!=0||K1!=0”的事件之間符合條件“K0==0&&K1==0”的事件出現的次數,獲得計數結果run_len,計數結果run_len附加上標識位后,作為游程長度碼runlen_code送至Alice模塊進行處理,獲得Alice模塊的篩選碼Alice_siftedkey,再將Alice模塊輸出的篩選碼Alice_siftedkey的位置信息result給Bob模塊中的密鑰抽取模,并根據篩選碼Alice_siftedkey的位置信息result從有效裸碼Bob_key中抽取并輸出篩選碼Bob_siftedkey,篩選碼Bob_siftedkey為Bob模塊輸出的篩選碼。本發明用于量子保密通信中密鑰的篩選領域。
【專利說明】基于FPGA的篩選模塊及篩選方法
【技術領域】
[0001 ] 本發明屬于量子保密通信領域。
【背景技術】
[0002]基于量子特性,量子密鑰分發(Quantum Key Distribution, QKD)允許相距遙遠的雙方,稱為Alice與Bob,即使在竊聽者Eve存在的前提下,仍能共享無條件安全的密鑰。這些密鑰不但可以與傳統密碼算法一起使用,增強其安全性,也可以與Vernam—次一密算法結合構造無條件安全的加密系統。盡管QKD已經成為了全球性的研究熱點,QKD依然不能廣泛地應用于現實生活中。QKD系統由量子信道與經典信道構成。由于系統噪聲、竊聽者、Alice調制基與Bob測量基的不一致等原因,Alice與Bob從量子信道接收到的裸碼僅僅只是相關的,而不是一致的。為了剔除裸碼中不一致的比特,后處理過程是必須的。雖然許多研究機構已經搭建了 GHz的QKD物理系統,QKD后處理系統實現速度的不足仍然是最重要的瓶頸之一。篩選模塊需要處理巨大的輸入,因此研究如何設計與實現有效的篩選模塊以加速整個系統顯得尤為重要。
[0003]一般來說,QKD后處理系統包括篩選、誤碼估計、誤碼協商與私密放大模塊。與其他模塊相比,篩選模塊的特點是需要更多的存儲資源與網絡資源,但是對計算資源的需求相對較低。 2012年,Li等人在PC機上實現的QKD后處理系統的實驗表明,在整個后處理模塊中,篩選模塊需要的時間最長。雖然一些研究者嘗試通過多線程技術加速篩選速度,但是最終的密鑰生成速率仍不能滿足實時應用的需求,仍存在實時性差的問題。
[0004]目前雖然QKD系統已經吸引了許多研究者的注意,但是QKD后處理系統的實現速度仍然不夠,成為了 QKD廣泛應用最大障礙之一。QKD后處理系統的篩選模塊需要處理大量的數據,因此研究如何設計與實現一種有效的篩選模塊以加速QKD后處理系統顯得尤為重要。
【發明內容】
[0005]本發明是為了解決現有篩選模塊及篩選方法的密鑰生成速率的實時性差和數據交互量大造成的存儲壓力大的問題,本發明提供了一種基于FPGA的篩選模塊及篩選方法。
[0006]基于FPGA的篩選模塊,它包括Alice模塊和Bob模塊,所述的Alice模塊和Bob模塊均采用FPGA實現,
[0007]Alice模塊,用于從接收到的裸碼中篩選出篩選碼,
[0008]Bob模塊,用于從接收到的裸碼中篩選出篩選碼,Alice模塊包括游程長度譯碼模塊和基比較模塊;Bob模塊包括游程長度編碼模塊、非空信號譯碼模塊和密鑰抽取模塊,
[0009]所述的游程長度編碼模塊,用于計算接收到的相鄰兩個事件之間符合條件“K0==0&&K1==0”的事件出現的次數,獲得計數結果run_len,所述相鄰兩個事件是指時序上相鄰的兩個均滿足條件“K0! =0 I I Kl! =0”的事件;
[0010]并對該計數結果run_len附加上標識位后,作為游程長度碼runlen_code,還用于輸出非空信號位置對應的探測結果nempty_kO、nempty_kl和非空信號位置對應的測量基nempty_bb給非空信號譯碼模塊,
[0011]K0, Kl表示同一個事件的兩個探測結果;
[0012]非空信號譯碼模塊,用于將輸入的非空信號位置對應的探測結果nempty_k0、nempty_kl轉換為有效裸碼,并輸出有效裸碼Bob_key給密鑰抽取模塊,還用于根據調制基nempty_bb輸出有效裸碼Bob_key所對應的測量基bob_base給基比較模塊,
[0013]游程長度譯碼模塊,用于將接收到的游程長度碼runlerucode轉換為有效裸碼的位置,并輸出該有效裸碼的位置對應的密鑰值key和調制基base給基比較模塊;
[0014]基比較模塊,用于通過比較接收到的測量基bob_base與調制基base獲得篩選碼Alice_siftedkey和該篩選碼Alice_siftedkey的位置信息result,并將該篩選碼Alice_siftedkey的位置信息result反饋給密鑰抽取模塊;
[0015]密鑰抽取模塊,用于根據篩選碼Alice_siftedkey的位置信息result從有效裸碼Bob_key中抽取并輸出篩選碼Bob_siftedkey。
[0016]基于FPGA的篩選方法,該方法包括步驟Alice和步驟Bob,
[0017]步驟Al ice,用于從裸碼中篩選出篩選碼,
[0018]步驟Bob,用于從裸碼中篩選出篩選碼,
[0019]步驟Alice進一步包括游程長度譯碼的步驟和基比較的步驟;
[0020]步驟Bob進一步包括游`程長度編碼步驟、非空信號譯碼步驟和密鑰抽取步驟,
[0021]所述的游程長度編碼步驟,用于計算接收到的相鄰兩個事件之間符合條件"KO==OMKl==O"的事件出現的次數,獲得計數結果run_len,
[0022]所述相鄰兩個事件是指時序上相鄰的兩個均滿足條件“K0!=0 I |Κ1!=0”的事件;并對該計數結果run_len附加上標識位后,作為游程長度碼runlen_code,還用于輸出非空信號位置對應的探測結果nempty_k0、nempty_kl和非空信號位置對應的測量基nempty_bb,
[0023]K0、Kl表示同一個事件的兩個探測結果;
[0024]非空信號譯碼步驟,用于將輸入的非空信號位置對應的探測結果nempty_k0、nempty_kl轉換為有效裸碼,并輸出有效裸碼Bob_key,還用于根據調制基nempty_bb輸出有效裸碼Bob_key所對應的測量基bob_base,
[0025]游程長度譯碼步驟,用于將接收到的游程長度碼runlerucode轉換為有效裸碼的位置,并輸出該有效裸碼的位置對應的密鑰值key和調制基base ;
[0026]基比較步驟,用于通過比較測量基bob_base與調制基base獲得篩選碼Alice_siftedkey 和該篩選碼 Alice_siftedkey 的位置信息 result ;
[0027]密鑰抽取步驟,用于根據篩選碼Alice_siftedkey的位置信息result從有效裸碼Bob_key中抽取并輸出篩選碼Bob_siftedkey。
[0028]本發明帶來的有益效果是,本發明提供了基于FPGA的篩選模塊及篩選方法,通過游程長度編碼模塊將空信號的位置編碼為游程長度,一方面解決了密鑰生成速率的實時性差使密鑰生成速率提高30%以上,另一方面大大地減少交互數據量,從而間接地緩減了通信壓力及雙方的存儲壓力。減少傳輸數據量的同時,為了防止連續空信號數超過一定值,造成溢出,我們引入一位標識位。如果連續空信號數超過可表示的范圍,則該標識位設為0,否則設置為I。
【專利附圖】
【附圖說明】
[0029]圖1為本發明所述的基于FPGA的篩選模塊的原理示意圖;其中,
[0030]Clk表示IOOMHz時鐘信號,Bb表示Bob模塊的測量基,Ready指示篩選模塊的初始化狀態,Tvalid表示Kl和KO是否有效的標識信號;
[0031]圖2為【具體實施方式】三中,所述的游程長度編碼模塊的原理示意圖;其中,wr_clk表示工作時鐘,ena表示輸出使能信號,din表示游程長度計數值,rd_clk表示讀時鐘,rd_count表示FIFO存儲單元中現有游程長度碼的數量,rd_en表示FIFO存儲單元的讀使能信號,
[0032]圖3為【具體實施方式】四中,所述的游程長度譯碼模塊的原理示意圖;其中,rd_enl表示裸碼與調制基FIFO存儲單元的讀使能信號;
[0033]圖4為【具體實施方式】五中,所述的編碼狀態控制器的原理示意圖;
[0034]圖5為【具體實施方式】六中,所述的譯碼狀態控制器的原理示意圖;
【具體實施方式】
[0035]【具體實施方式】一:參見圖1說明本實施方式,本實施方式所述的基于FPGA的篩選模塊,它包括Alice模塊I和Bob模塊2,所述的Alice模塊I和Bob模塊2均采用FPGA實現,
[0036]Alice模塊1,用于從接收到的裸碼中篩選出篩選碼,
[0037]Bob模塊2,用于從接收到的`裸碼中篩選出篩選碼,Alice模塊I包括游程長度譯碼模塊1-1和基比較模塊1-2 ;Bob模塊2包括游程長度編碼模塊2-1、非空信號譯碼模塊2-2和密鑰抽取模塊2-3,
[0038]所述的游程長度編碼模塊2-1,用于計算接收到的相鄰兩個事件之間符合條件“K0==0&&K1==0”的事件出現的次數,獲得計數結果run_len,所述相鄰兩個事件是指時序上相鄰的兩個均滿足條件“K0! =0 I I Kl! =0”的事件;
[0039]并對該計數結果run_len附加上標識位后,作為游程長度碼runlen_code,還用于輸出非空信號位置對應的探測結果nempty_k0、nempty_kl和非空信號位置對應的測量基nempty_bb給非空信號譯碼模塊2_2,
[0040]K0、Kl表示同一個事件的兩個探測結果;
[0041]非空信號譯碼模塊2-2,用于將輸入的非空信號位置對應的探測結果nempty_k0、nempty_kl轉換為有效裸碼,并輸出有效裸碼Bob_key給密鑰抽取模塊2_3,還用于根據調制基nempty_bb輸出有效裸碼Bob_key所對應的測量基bob_base給基比較模塊1_2,
[0042]游程長度譯碼模塊1-1,用于將接收到的游程長度碼runlerucode轉換為有效裸碼的位置,并輸出該有效裸碼的位置對應的密鑰值key和調制基base給基比較模塊1_2 ;
[0043]基比較模塊1-2,用于通過比較接收到的測量基bob_base與調制基base獲得篩選碼Alice_siftedkey和該篩選碼Alice_siftedkey的位置信息result,并將該篩選碼Alice_siftedkey的位置信息result反饋給密鑰抽取模塊2_3 ;
[0044]密鑰抽取模塊2-3,用于根據篩選碼Alice_siftedkey的位置信息result從有效裸碼Bob_key中抽取并輸出篩選碼Bob_siftedkey。
[0045]本實施方式中篩選碼指的是基一致位置對應的有效裸碼。
[0046]【具體實施方式】二:本實施方式是對【具體實施方式】一所述的基于FPGA的篩選模塊中的非空信號譯碼模塊2-2的進一步限定,本實施方式中,所述非空信號譯碼模塊2-2用于將輸入的非空信號位置對應的探測結果nempty_k0、nempty_kl轉換為有效裸碼的轉換原則為:當nempty_k0的取值為‘0’、nempty_kl的取值為‘0’時,有效裸碼Bob_key為‘I’ ;當nempty_k0的取值為‘l’、nempty_kl的取值為‘0’時,有效裸碼Bob_key為‘0’;當nempty_k0的取值為‘l’、nempty_kl的取值為‘I’時,有效裸碼Bob_key為‘I’或‘O’。
[0047]【具體實施方式】三:參見圖2說明本實施方式,本實施方式與【具體實施方式】一或二所述的基于FPGA的篩選模塊的區別在于,所述的游程長度編碼模塊2-1包括游程長度計數單元2-1-1、編碼狀態控制器2-1-2和FIFO存儲單元2_1_3 ;
[0048]游程長度計數單元2-1-1,用于計算接收到的相鄰兩個事件之間符合條件“K0==0&&K1==0”的事件出現的次數,獲得計數結果run_len,并將計數結果run_len發送給編碼狀態控制器2-1-2 ;
[0049]編碼狀態控制器2-1-2,用于控制寫使能信號wr_en,將計數結果run_len寫入FIFO存儲單元2-1-3,并將非空信號位置對應的探測結果nempty_k0、nempty_kl和非空信號位置對應的測量基nempty_bb輸出給非空信號譯碼模塊2_2 ;
[0050]FIFO存儲單元2-1-3,用于存儲等待發送給游程長度譯碼模塊1_1的游程長度碼runlen—code。
[0051]【具體實施方式】四:參見圖3說明本實施方式,本實施方式與【具體實施方式】一或二所述的基于FPGA的篩選模塊的區別在于,所述的游程長度譯碼模塊1-1包括裸碼與調制基FIFO存儲單元1-1-1、接收游程長度FIFO存儲單元1_1_2和譯碼狀態控制器1_1_3 ;
[0052]裸碼與調制基FIFO存儲單元1-1-1用于緩存輸入的裸碼Ka及調制基Ba,并獲得非空信號位置對應的裸碼及調制基數組{Ba,Ka};
[0053]接收游程長度FIFO存儲單元1-1-2用于緩存從游程長度編碼模塊2_1傳輸而至的游程長度碼runlen_code,
[0054]譯碼狀態控制器1-1-3用于通過控制讀使能信號rd_en2,從接收游程長度FIFO存儲單元1-1-2中獲得游程長度碼runlen_code,還用于控制讀使能信號rd_enl,來讀取非空信號位置對應的裸碼及調制基數組{Ba,Ka},從而獲得效裸碼的位置對應的密鑰值key和調制基base。
[0055]【具體實施方式】五:參見圖4說明本實施方式,本實施方式與【具體實施方式】三所述的基于FPGA的篩選模塊的區別在于,所述的編碼狀態控制器2-1-2采用狀態機實現,該狀態機包括狀態Idle和 狀態Out,
[0056]狀態Idle,初始化變量c的值為O ;當信號Tvalid為高電平時,如果Kl和KO的值均為0,則變量c遞增I ;如果KO ! =0 I Kl ! =0,則將變量c的值作為計數結果賦給當前計數值counter,然后由狀態Idle轉移到狀態Out,
[0057]狀態Out,用于將counter的值賦給輸出計數結果run_len,并將該計數結果run_Ien輸出給FIFO存儲單元2_1_3,然后跳轉到Idle狀態;
[0058]Tvalid表示Kl和KO是否有效的標識信號。[0059]本實施方式中獲得的計數結果rUn_len即為游程長度計數值din。
[0060]【具體實施方式】六:參見圖5說明本實施方式,本實施方式與【具體實施方式】四所述的基于FPGA的篩選模塊的區別在于,所述的譯碼狀態控制器1-1-3采用狀態機實現,該狀態機包括狀態Idle、狀態Count和狀態Out,
[0061]狀態Idle,當信號empty在時鐘上升沿為高電平,則用于保持狀態Idle不變,當信號empty在時鐘上升沿為低電平,用于將讀使能信號rd_en2置高電平,并從接收游程長度FIFO存儲單元1-1-2中讀取runlen_code的值;
[0062]如果runlen_code不等于O,將runlen_code的值賦于cnt,跳轉到狀態Count ;
[0063]如果runlen_code等于O,則跳轉到狀態Out ;
[0064]狀態Count,用于將讀使能信號rd_enl置高電平,并從裸碼與調制基FIFO存儲單元1-1-1中讀取待剔除的空信號位置數量cnt,然后在每個時鐘周期內將cnt遞減1,當cnt遞減為O時,跳轉到狀態Out ;
[0065]狀態Out,用于將使能信號rd_enl置為高電平,讀取裸碼與調制基FIFO存儲單元1-1-1中的非空信號位置對應的裸碼及調制基數組{Ba,Ka},并將該數組{Ba,Ka}中的裸碼Ka和調制基Ba分別賦給有效裸碼的位置信息對應的密鑰值key和調制基base,然后跳轉倒狀態Idle ;
[0066]其中,empty表示接收游程長度FIFO存儲單元1_1_2是否為空的指示信號。
[0067]【具體實施方式】七:本實施方式所述的基于FPGA的篩選方法,該方法包括步驟Alice和步驟Bob, [0068]步驟Al ice,用于從裸碼中篩選出篩選碼,
[0069]步驟Bob,用于從裸碼中篩選出篩選碼,步驟Alice進一步包括游程長度譯碼的步驟和基比較的步驟;
[0070]步驟Bob進一步包括游程長度編碼步驟、非空信號譯碼步驟和密鑰抽取步驟,
[0071]所述的游程長度編碼步驟,用于計算接收到的相鄰兩個事件之間符合條件"KO==OMKl==O"的事件出現的次數,獲得計數結果run_len,
[0072]所述相鄰兩個事件是指時序上相鄰的兩個均滿足條件“K0!=0 I |Κ1!=0”的事件;并對該計數結果run_len附加上標識位后,作為游程長度碼runlen_code,還用于輸出非空信號位置對應的探測結果nempty_k0、nempty_kl和非空信號位置對應的測量基nempty_bb,
[0073]K0、Kl表示同一個事件的兩個探測結果;
[0074]非空信號譯碼步驟,用于將輸入的非空信號位置對應的探測結果nempty_k0、nempty_kl轉換為有效裸碼,并輸出有效裸碼Bob_key,還用于根據調制基nempty_bb輸出有效裸碼Bob_key所對應的測量基bob_base,
[0075]游程長度譯碼步驟,用于將接收到的游程長度碼runlerucode轉換為有效裸碼的位置,并輸出該有效裸碼的位置對應的密鑰值key和調制基base ;
[0076]基比較步驟,用于通過比較測量基bob_base與調制基base獲得篩選碼Alice_siftedkey 和該篩選碼 Alice_siftedkey 的位置信息 result ;
[0077]密鑰抽取步驟,用于根據篩選碼Alice_siftedkey的位置信息result從有效裸碼Bob_key中抽取并輸出篩選碼Bob_siftedkey。[0078]【具體實施方式】八:本實施方式是對【具體實施方式】七所述的基于FPGA的篩選方法中的非空信號譯碼步驟的進一步限定,本實施方式中,所述非空信號譯碼步驟用于將非空信號位置對應的探測結果nempty_k0、nempty_kl轉換為有效裸碼的轉換原則為:當nempty_k0的取值為‘0’、nempty_kl的取值為‘0’時,有效裸碼Bob_key為‘I’;當nempty_k0的取值為‘l’、nempty_kl的取值為‘0’時,有效裸碼Bob_key為‘0’ ;當nempty_k0的取值為‘l’、nempty_kl的取值為‘I’時,有效裸碼Bob_key為‘I’或‘O’。
[0079]【具體實施方式】九:參見圖4說明本實施方式,本實施方式是對【具體實施方式】七或八所述的基于FPGA的篩選方法中的游程長度編碼步驟的進一步限定,所述的游程長度編碼步驟包括游程長度計數步驟、編碼狀態控制步驟和FIFO存儲步驟;
[0080]游程長度計數步驟,用于計算相鄰兩個事件之間符合條件“K0==0&&K1==0”的事件出現的次數,獲得計數結果run_len,
[0081 ] 編碼狀態控制步驟,用于控制寫使能信號wr_en,將計數結果run_len寫入FIFO存儲步驟,并將非空信號位置對應的探測結果nempty_k0、nempty_kl和非空信號位置對應的測量基nempty_bb輸出;
[0082]FIFO存儲步驟,用于存儲等待發送給游程長度譯碼步驟的游程長度碼rUnlen_
Code0
[0083]【具體實施方式】十:本實施方式是對【具體實施方式】七或八所述的基于FPGA的篩選方法中的游程長度譯碼步驟的進一步限定,所述的游程長度譯碼步驟包括裸碼與調制基FIFO存儲步驟、接收游程長度FIFO存儲步驟和譯碼狀態控制步驟;
[0084]裸碼與調制基F`IFO存儲步驟,用于緩存輸入的裸碼Ka及調制基Ba,并獲得非空信號位置對應的裸碼及調制基{Ba,Ka};
[0085]接收游程長度FIFO存儲步驟,用于緩存游程長度碼runlen_code,
[0086]譯碼狀態控制步驟,用于通過控制讀使能信號rd_en2,獲得游程長度碼runlen_code,還用于控制讀使能信號rd_enl,來讀取非空信號位置對應的裸碼及調制基{Ba,Ka},從而獲得效裸碼的位置對應的密鑰值key和調制基base。
[0087]【具體實施方式】^:本實施方式是對【具體實施方式】九所述的基于FPGA的篩選方法中的編碼狀態控制步驟的進一步限定,所述的編碼狀態控制步驟采用狀態機的方式實現,其包括狀態Idle和狀態Out,
[0088]狀態Idle,初始化變量c的值為O ;當信號Tvalid為高電平時,如果Kl和KO的值均為0,則變量c遞增I ;如果KO ! =0 I Kl ! =0,則將變量c的值作為計數結果賦給當前計數值counter,然后由狀態Idle轉移到狀態Out,
[0089]狀態Out,用于將counter的值賦給輸出計數結果run_len,然后跳轉到Idle狀態;
[0090]Tvalid表示Kl和KO是否有效的標識信號。
[0091]【具體實施方式】十二:本實施方式是對【具體實施方式】十所述的基于FPGA的篩選方法中的譯碼狀態控制步驟的進一步限定,
[0092]所述的譯碼狀態控制步驟采用狀態機的方式實現,其包括狀態Idle、狀態Count和狀態Out,
[0093]狀態Idle,當信號empty在時鐘上升沿為高電平,則用于保持狀態Idle不變,當信號empty在時鐘上升沿為低電平,用于將讀使能信號rd_en2置高電平,并讀取runlen_code的值;
[0094]如果runlen_code不等于O,將runlen_code的值賦于cnt,跳轉到狀態Count ;
[0095]如果runlen_code等于O,則跳轉到狀態Out ;
[0096]狀態Count,用于將讀使能信號rd_enl置高電平,并讀取待剔除的空信號位置數量cnt,然后在每個時鐘周期內將cnt遞減I,當cnt遞減為O時,跳轉到狀態Out ;
[0097]狀態Out,用于將使能信號rd_enl置為高電平,讀取非空信號位置對應的裸碼及調制基數組{Ba,Ka},并將該數組{Ba,Ka}中的裸碼Ka和調制基Ba分別賦給有效裸碼的位置信息對應的密鑰值key和調制基base,然后跳轉倒狀態Idle ;
[0098]其中,empty表示接收游程長度FIFO存儲步驟中的數據是否為空的指示信號。
【權利要求】
1.基于FPGA的篩選模塊,其特征在于,它包括Alice模塊(I)和Bob模塊(2),所述的Alice模塊(I)和Bob模塊(2)均采用FPGA實現, Alice模塊(1),用于從接收到的裸碼中篩選出篩選碼, Bob模塊(2 ),用于從接收到的裸碼中篩選出篩選碼, Alice模塊(I)包括游程長度譯碼模塊(1-1)和基比較模塊(1-2) ;Bob模塊(2)包括游程長度編碼模塊(2-1)、非空信號譯碼模塊(2-2)和密鑰抽取模塊(2-3), 所述的游程長度編碼模塊(2-1),用于計算接收到的相鄰兩個事件之間符合條件“K0==0&&K1==0”的事件出現的次數,獲得計數結果run_len,所述相鄰兩個事件是指時序上相鄰的兩個均滿足條件“K0! =0 I I Kl! =0”的事件; 并對該計數結果run_len附加上標識位后,作為游程長度碼runlen_code,還用于輸出非空信號位置對應的探測結果nempty_kO、nempty_kl和非空信號位置對應的測量基nempty_bb給非空信號譯碼模塊(2_2), KO, Kl表示同一個事件的兩個探測結果; 非空信號譯碼模塊(2-2),用于將輸入的非空信號位置對應的探測結果nempty_kO、nempty_kl轉換為有效裸碼,并輸出有效裸碼Bob_key給密鑰抽取模塊(2_3),還用于根據調制基nempty_bb輸出有效裸碼Bob_key所對應的測量基bob_base給基比較模塊(1_2),游程長度譯碼模塊(1-1),用于將接收到的游程長度碼runlen_COde轉換為有效裸碼的位置,并輸出該有效裸碼的位置對應的密鑰值key和調制基base給基比較模塊(1_2);基比較模塊(1-2 ),用于通過比較接收到的測量基bob_base與調制基base獲得篩選碼Alice_siftedkey和該篩 選碼Alice_siftedkey的位置信息result,并將該篩選碼Alice_siftedkey的位置信息result反饋給密鑰抽取模塊(2_3); 密鑰抽取模塊(2-3),用于根據篩選碼Alice_siftedkey的位置信息result從有效裸碼Bob_key中抽取并輸出篩選碼Bob_siftedkey。
2.根據權利要求1所述的基于FPGA的篩選模塊,其特征在于,所述非空信號譯碼模塊(2-2)用于將輸入的非空信號位置對應的探測結果nempty_kO、nempty_kl轉換為有效裸碼的轉換原則為:當nempty_kO的取值為‘0’、nempty_kl的取值為‘0’時,有效裸碼Bob_key為‘I’ ;當nempty_kO的取值為‘l’、nempty_kl的取值為‘0’時,有效裸碼Bob_key為‘O,;當nempty_kO的取值為‘l’、nempty_kl的取值為‘I’時,有效裸碼Bob_key為‘I’或‘O’。
3.根據權利要求1或2所述的基于FPGA的篩選模塊,其特征在于,所述的游程長度編碼模塊(2-1)包括游程長度計數單元(2-1-1 )、編碼狀態控制器(2-1-2)和FIFO存儲單元(2-1-3); 游程長度計數單元(2-1-1),用于計算接收到的相鄰兩個事件之間符合條件“K0==0&&K1==0”的事件出現的次數,獲得計數結果run_len,并將計數結果run_len發送給編碼狀態控制器(2-1-2);編碼狀態控制器(2-1-2),用于控制寫使能信號wr_en,將計數結果run_len寫入FIFO存儲單元(2_1_3),并將非空信號位置對應的探測結果nempty_kO、nempty_kl和非空信號位置對應的測量基nempty_bb輸出給非空信號譯碼模塊(2_2);FIFO存儲單元(2-1-3),用于存儲等待發送給游程長度譯碼模塊(1-1)的游程長度碼runlen_code。
4.根據權利要求1或2所述的基于FPGA的篩選模塊,其特征在于,所述的游程長度譯碼模塊(1-1)包括裸碼與調制基FIFO存儲單元(1-1-1)、接收游程長度FIFO存儲單元(1-1-2)和譯碼狀態控制器(1-1-3); 裸碼與調制基FIFO存儲單元(1-1-1 ),用于緩存輸入的裸碼Ka及調制基Ba,并獲得非空信號位置對應的裸碼及調制基數組{Ba,Ka}; 接收游程長度FIFO存儲單元(1-1-2),用于緩存從游程長度編碼模塊(2-1)傳輸而至的游程長度碼runlen_code, 譯碼狀態控制器(1-1-3),用于通過控制讀使能信號rd_en2,從接收游程長度FIFO存儲單元(1-1-2)中獲得游程長度碼runlen_code,還用于控制讀使能信號rd_enl,來讀取非空信號位置對應的裸碼及調制基數組{Ba,Ra},從而獲得效裸碼的位置對應的密鑰值key和調制基base。
5.根據權利要求3所述的基于FPGA的篩選模塊,其特征在于,所述的編碼狀態控制器(2-1-2)采用狀態機實現,該狀態機包括狀態Idle和狀態Out, 狀態Idle,初始化變量c的值為O ;當信號Tvalid為高電平時,如果Kl和KO的值均為0,則變量c遞增I ;如果KO ! =0 I I Kl ! =0,則將變量c的值作為計數結果賦給當前計數值counter,然后由狀態Idle轉移到狀態Out, 狀態Out,用于將counter的值賦給輸出計數結果run_len,并將該計數結果run_len輸出給FIFO存儲單元(2-1-3),然后跳轉到Idle狀態; Tvalid表示Kl和KO是否有效的標識信號。
6.根據權利要求4 所述的基于FPGA的篩選模塊,其特征在于,所述的譯碼狀態控制器(1-1-3)采用狀態機實現,該狀態機包括狀態Idle、狀態Count和狀態Out, 狀態Idle,當信號empty在時鐘上升沿為高電平,則用于保持狀態Idle不變,當信號empty在時鐘上升沿為低電平,用于將讀使能信號rd_en2置高電平,并從接收游程長度FIFO存儲單元(1-1-2)中讀取runlen_code的值; 如果runlen_code不等于O,將runlen_code的值賦于cnt,跳轉到狀態Count ; 如果runlen_code等于O,則跳轉到狀態Out ; 狀態Count,用于將讀使能信號rd_enl置高電平,并從裸碼與調制基FIFO存儲單元(1-1-1)中讀取待剔除的空信號位置數量cnt,然后在每個時鐘周期內將cnt遞減1,當cnt遞減為O時,跳轉到狀態Out ; 狀態Out,用于將使能信號rd_enl置為高電平,讀取裸碼與調制基FIFO存儲單元(1-1-1)中的非空信號位置對應的裸碼及調制基數組{Ba,Ka},并將該數組{Ba,Ka}中的裸碼Ka和調制基Ba分別賦給有效裸碼的位置信息對應的密鑰值key和調制基base,然后跳轉倒狀態Idle ; 其中,empty表示接收游程長度FIFO存儲單元(1_1_2)是否為空的指示信號。
7.基于FPGA的篩選方法,其特征在于,該方法包括步驟Alice和步驟Bob, 步驟Al ice,用于從裸碼中篩選出篩選碼, 步驟Bob,用于從裸碼中篩選出篩選碼, 步驟Alice進一步包括游程長度譯碼的步驟和基比較的步驟; 步驟Bob進一步包括游程長度編碼步驟、非空信號譯碼步驟和密鑰抽取步驟, 所述的游程長度編碼步驟,用于計算接收到的相鄰兩個事件之間符合條件“K0==0&&K1==0”的事件出現的次數,獲得計數結果run_len, 所述相鄰兩個事件是指時序上相鄰的兩個均滿足條件“K0!=0| |Κ1!=0”的事件;并對該計數結果run_len附加上標識位后,作為游程長度碼runlerucode,還用于輸出非空信號位置對應的探測結果nempty_kO、nempty_kl和非空信號位置對應的測量基nempty_bb, KO, Kl表示同一個事件的兩個探測結果; 非空信號譯碼步驟,用于將輸入的非空信號位置對應的探測結果nempty_k0、nempty_kl轉換為有效裸碼,并輸出有效裸碼Bob_key,還用于根據調制基nempty_bb輸出有效裸碼Bob_key所對應的測量基bob_base, 游程長度譯碼步驟,用于將接收到的游程長度碼runlen_COde轉換為有效裸碼的位置,并輸出該有效裸碼的位置對應的密鑰值key和調制基base ; 基比較步驟,用于通過比較測量基bob_base與調制基base獲得篩選碼Alice_siftedkey 和該篩選碼 Alice_siftedkey 的位置信息 result ; 密鑰抽取步驟,用于根據篩選碼Alice_siftedkey的位置信息result從有效裸碼Bob_key中抽取并輸出篩選碼Bob_siftedkey。
8.根據權利要求7所述的基于FPGA的篩選方法,其特征在于,所述非空信號譯碼步驟用于將非空信號位置對應的探測結果nempty_k0、nempty_kl轉換為有效裸碼的轉換原則為:當nempty_k0的取值為‘O’、nempty_kl的取值為‘0’時,有效裸碼Bob_key為‘I’ ;當nempty_k0的取值為‘l’、nempty_kl的取值為‘0’時,有效裸碼Bob_key為‘0’;當nempty_k0的取值為‘l’、nempty_kl的`取值為‘I’時,有效裸碼Bob_key為‘I’或‘O’。
9.根據權利要求7或8所述的基于FPGA的篩選方法,其特征在于,所述的游程長度編碼步驟包括游程長度計數步驟、編碼狀態控制步驟和FIFO存儲步驟; 游程長度計數步驟,用于計算相鄰兩個事件之間符合條件“K0==0&&K1==0”的事件出現的次數,獲得計數結果run_len, 編碼狀態控制步驟,用于控制寫使能信號wr_en,將計數結果run_len寫入FIFO存儲步驟,并將非空信號位置對應的探測結果nempty_k0、nempty_kl和非空信號位置對應的測量基 nempty_bb 輸出; FIFO存儲步驟,用于存儲等待發送給游程長度譯碼步驟的游程長度碼runlerucode。
10.根據權利要求7或8所述的基于FPGA的篩選方法,其特征在于,所述的游程長度譯碼步驟包括裸碼與調制基FIFO存儲步驟、接收游程長度FIFO存儲步驟和譯碼狀態控制步驟; 裸碼與調制基FIFO存儲步驟,用于緩存輸入的裸碼Ka及調制基Ba,并獲得非空信號位置對應的裸碼及調制基{Ba,Ka}; 接收游程長度FIFO存儲步驟,用于緩存游程長度碼runlen_COde, 譯碼狀態控制步驟,用于通過控制讀使能信號rd_en2,獲得游程長度碼runlen_COde,還用于控制讀使能信號rd_enl,來讀取非空信號位置對應的裸碼及調制基{Ba,Ka},從而獲得效裸碼的位置對應的密鑰值key和調制基base。
【文檔編號】H04L9/08GK103825726SQ201410074813
【公開日】2014年5月28日 申請日期:2014年3月3日 優先權日:2014年3月3日
【發明者】李瓊, 韓琦, 樂丹, 林志斌, 牛夏牧 申請人:哈爾濱工業大學