一種密鑰序列的獲取方法和系統(tǒng)以及fpga的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù),特別涉及一種密鑰序列的獲取方法和系統(tǒng)以及FPGA。
【背景技術(shù)】
[0002]密鑰序列也稱為流密碼,具有實(shí)現(xiàn)簡(jiǎn)單、便于硬件實(shí)現(xiàn)、加解密處理速度快、沒(méi)有或只有有限的錯(cuò)誤傳播等特點(diǎn),在實(shí)際應(yīng)用中,特別是專用或機(jī)密機(jī)構(gòu)中保持著優(yōu)勢(shì),典型的應(yīng)用領(lǐng)域包括無(wú)線通信、外交通信等。
[0003]目前,獲取密鑰序列的方式是通過(guò)編寫軟件代碼來(lái)實(shí)現(xiàn)。但是,軟件代碼的方式,速度較慢,而且安全性差。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種密鑰序列的獲取方法和系統(tǒng)以及FPGA,能夠提高獲取速度。
[0005]—種密鑰序列的獲取方法,設(shè)置FPGA以及密鑰序列裝置,在所述FPGA中設(shè)置狀態(tài)機(jī),還包括:
[0006]將所述FPGA與所述密鑰序列裝置相連;
[0007]利用所述FPGA中的狀態(tài)機(jī),控制所述密鑰序列裝置依次執(zhí)行初始向量的加載、密鑰長(zhǎng)度的設(shè)置、根據(jù)所述加載的初始向量以及所述設(shè)置的密鑰長(zhǎng)度來(lái)生成密鑰序列、及向FPGA輸出所生成的密鑰序列。
[0008]所述在所述FPGA中設(shè)置狀態(tài)機(jī)包括:在所述FPGA中,設(shè)置狀態(tài)機(jī)的狀態(tài)包括加載IV狀態(tài)、寫密鑰長(zhǎng)度狀態(tài)、等待狀態(tài)、讀密鑰狀態(tài);
[0009]所述利用所述FPGA中的狀態(tài)機(jī),控制所述密鑰序列裝置包括:
[0010]FPGA中的狀態(tài)機(jī)進(jìn)入加載IV狀態(tài),把密鑰序列裝置的IV向量加載使能信號(hào)設(shè)置為高電平,之后把初始向量傳輸給所述密鑰序列裝置,所述密鑰序列裝置獲取初始向量;
[0011]FPGA中的狀態(tài)機(jī)進(jìn)入寫密鑰長(zhǎng)度狀態(tài),確定密鑰長(zhǎng)度,把密鑰長(zhǎng)度的值傳輸給密鑰序列裝置,所述密鑰序列裝置獲取密鑰長(zhǎng)度的值;
[0012]FPGA中的狀態(tài)機(jī)進(jìn)入等待狀態(tài),所述密鑰序列裝置根據(jù)獲取的初始向量以及密鑰長(zhǎng)度的值生成密鑰序列;
[0013]FPGA中的狀態(tài)機(jī)進(jìn)入讀密鑰狀態(tài),讀取所述密鑰序列裝置傳輸來(lái)的密鑰序列。
[0014]所述在所述FPGA中設(shè)置狀態(tài)機(jī)進(jìn)一步包括:在所述FPGA中,設(shè)置狀態(tài)機(jī)的狀態(tài)還包括空閑狀態(tài)和復(fù)位狀態(tài);
[0015]在所述FPGA中的狀態(tài)機(jī)進(jìn)入加載IV狀態(tài)之前進(jìn)一步包括:
[0016]FPGA的狀態(tài)機(jī)處于空閑狀態(tài),之后進(jìn)入復(fù)位狀態(tài);在復(fù)位狀態(tài),F(xiàn)PGA的狀態(tài)機(jī)設(shè)置所述密鑰序列裝置的復(fù)位信號(hào)為低電平,對(duì)所述密鑰序列裝置進(jìn)行復(fù)位,之后進(jìn)入所述加載IV狀態(tài)。
[0017]—種FPGA,包括:狀態(tài)機(jī)、存儲(chǔ)單元以及接口單元;
[0018]狀態(tài)機(jī),用于實(shí)現(xiàn)一個(gè)以上的狀態(tài),控制所述一個(gè)以上的狀態(tài)的切換,并根據(jù)切換到的每個(gè)狀態(tài),通過(guò)接口單元控制所述密鑰序列裝置依次執(zhí)行初始向量的加載、密鑰長(zhǎng)度的設(shè)置、根據(jù)所述加載的初始向量及所述設(shè)置的密鑰長(zhǎng)度來(lái)生成密鑰序列、向所述狀態(tài)機(jī)返回所生成的密鑰序列;并且,將接收到的密鑰序列保存到所述存儲(chǔ)單元中;
[0019]存儲(chǔ)單元,用于接收外部發(fā)來(lái)的初始向量,向所述狀態(tài)機(jī)提供所述初始向量,以及保存密鑰序列;
[0020]接口單元,用于連接外部密鑰序列裝置,將所述外部密鑰序列裝置發(fā)來(lái)的密鑰序列傳輸?shù)剿龃鎯?chǔ)單元。
[0021]所述狀態(tài)機(jī)中包括:
[0022]第一實(shí)現(xiàn)子單元,用于設(shè)置狀態(tài)機(jī)的狀態(tài)包括加載IV狀態(tài)、寫密鑰長(zhǎng)度狀態(tài)、等待狀態(tài)、讀密鑰狀態(tài);
[0023]狀態(tài)切換子單元,用于控制進(jìn)入所述第一實(shí)現(xiàn)子單元設(shè)置的加載IV狀態(tài),通過(guò)所述接口單元把密鑰序列裝置的IV向量加載使能信號(hào)設(shè)置為高電平,把初始向量傳輸給所述密鑰序列裝置;之后,切換到所述第一實(shí)現(xiàn)子單元設(shè)置的寫密鑰長(zhǎng)度狀態(tài),確定密鑰長(zhǎng)度,把密鑰長(zhǎng)度的值通過(guò)所述接口單元傳輸給密鑰序列裝置;之后,切換到所述第一實(shí)現(xiàn)子單元設(shè)置的等待狀態(tài);之后,切換到所述第一實(shí)現(xiàn)子單元設(shè)置的讀密鑰狀態(tài),通過(guò)所述接口單元讀取所述密鑰序列裝置傳輸來(lái)的密鑰序列。
[0024]所述第一實(shí)現(xiàn)子單元,進(jìn)一步設(shè)置狀態(tài)機(jī)的狀態(tài)包括空閑狀態(tài)和復(fù)位狀態(tài);
[0025]所述狀態(tài)切換子單元,進(jìn)一步在執(zhí)行所述控制進(jìn)入所述第一實(shí)現(xiàn)子單元設(shè)置的加載IV狀態(tài)之前,控制進(jìn)入所述第一實(shí)現(xiàn)子單元設(shè)置的空閑狀態(tài),之后,切換到所述第一實(shí)現(xiàn)子單元設(shè)置的復(fù)位狀態(tài),在復(fù)位狀態(tài),通過(guò)所述接口單元設(shè)置外部所述密鑰序列裝置的復(fù)位信號(hào)為低電平,對(duì)所述密鑰序列裝置進(jìn)行復(fù)位,之后執(zhí)行所述控制進(jìn)入所述第一實(shí)現(xiàn)子單元設(shè)置的加載IV狀態(tài);以及,在執(zhí)行所述切換到所述第一實(shí)現(xiàn)子單元設(shè)置的讀密鑰狀態(tài),通過(guò)所述接口單元讀取所述密鑰序列裝置傳輸來(lái)的密鑰序列之后,切換回所述第一實(shí)現(xiàn)子單元設(shè)置的空閑狀態(tài)。
[0026]所述存儲(chǔ)單元為雙端口 RAM,所述雙端口 RAM包括:
[0027]第一端口,用于接收外部主機(jī)發(fā)來(lái)的初始向量,傳輸?shù)絉AM ;
[0028]RAM,用于保存初始向量,以及保存密鑰序列;
[0029]第二端口,用于接收所述狀態(tài)機(jī)發(fā)來(lái)的密鑰序列,傳輸?shù)剿鯮AM。
[0030]所述接口單元包括:
[0031]時(shí)鐘信號(hào)引腳,連接到外部密鑰序列裝置的時(shí)鐘信號(hào)引腳;
[0032]復(fù)位信號(hào)引腳,連接到外部密鑰序列裝置的復(fù)位信號(hào)引腳,低電平有效;
[0033]第一 1引腳,連接到外部密鑰序列裝置的初始向量IV引腳;
[0034]第二 1引腳,連接到外部密鑰序列裝置的IV加載信號(hào)引腳,高電平有效;
[0035]第三1引腳,連接到外部密鑰序列裝置的密鑰序列長(zhǎng)度信號(hào)引腳;
[0036]第四1引腳,連接到外部密鑰序列裝置的密鑰序列輸出引腳;
[0037]所述狀態(tài)機(jī),具體在進(jìn)入復(fù)位狀態(tài)時(shí),控制所述接口單元通過(guò)所述復(fù)位信號(hào)引腳向密鑰序列裝置輸出低電平信號(hào),對(duì)所述密鑰序列裝置進(jìn)行復(fù)位;在進(jìn)入加載IV狀態(tài)時(shí),控制所述接口單元通過(guò)第二 1引腳輸出高電平,并通過(guò)第一 1引腳把初始向量傳輸給所述密鑰序列裝置;在進(jìn)入寫密鑰長(zhǎng)度狀態(tài)時(shí),控制所述接口單元通過(guò)第三1引腳把密鑰長(zhǎng)度的值傳輸給密鑰序列裝置;在進(jìn)入讀密鑰狀態(tài)時(shí),控制所述接口單元通過(guò)第四1引腳接收密鑰序列裝置傳輸來(lái)的密鑰序列。
[0038]一種密鑰序列的獲取系統(tǒng),包括密鑰序列裝置以及上述任意一種FPGA ;其中,
[0039]所述密鑰序列裝置,在所述FPGA狀態(tài)機(jī)的控制下,依次執(zhí)行初始向量的加載、密鑰長(zhǎng)度的設(shè)置、根據(jù)所述加載的初始向量及所述設(shè)置的密鑰長(zhǎng)度來(lái)生成密鑰序列、向所述狀態(tài)機(jī)返回所生成的密鑰序列。
[0040]密鑰序列裝置包括Trivium模塊;所述Trivium模塊包括:
[0041]時(shí)鐘信號(hào)引腳CLK,與所述FPGA的時(shí)鐘信號(hào)引腳相連;
[0042]復(fù)位信號(hào)引腳RST,與所述FPGA的復(fù)位信號(hào)引腳相連;
[0043]初始向量IV引腳IV [79..0],與所述FPGA的第一 1引腳相連;
[0044]IV加載信號(hào)引腳IV_load,與所述FPGA的第二 1引腳相連;
[0045]密鑰序列長(zhǎng)度信號(hào)引腳KEY_len[31..0],與所述FPGA的第三1引腳相連;
[0046]密鑰序列輸出引腳S_out,與所述FPGA的第四1引腳相連。
[0047]本發(fā)明實(shí)施例提供的密鑰序列的獲取方法和系統(tǒng)以及FPGA,能夠利用硬件FPGA與密鑰序列裝置配合,在FPGA中設(shè)置狀態(tài)機(jī),并通過(guò)狀態(tài)機(jī)的狀態(tài)的切換,來(lái)控制密鑰序列裝置執(zhí)行生成密鑰序列的各個(gè)處理,由于采用FPGA的狀態(tài)機(jī)來(lái)控制,是一種硬件實(shí)現(xiàn)的方式,因此,相對(duì)于現(xiàn)有技術(shù)中利用軟件代碼的方式,則能夠大大提高獲取密鑰序列的速度。
【附圖說(shuō)明】
[0048]圖1是本發(fā)明一個(gè)實(shí)施例中密鑰序列獲取方法的流程圖。
[0049]圖2是本發(fā)明一個(gè)實(shí)施例中FPGA的結(jié)構(gòu)示意圖。
[0050]圖3是本發(fā)明