CN103346878B - 一种基于fpga高速串行io的保密通信方法 - Google Patents
一种基于fpga高速串行io的保密通信方法 Download PDFInfo
- Publication number
- CN103346878B CN103346878B CN201310280783.9A CN201310280783A CN103346878B CN 103346878 B CN103346878 B CN 103346878B CN 201310280783 A CN201310280783 A CN 201310280783A CN 103346878 B CN103346878 B CN 103346878B
- Authority
- CN
- China
- Prior art keywords
- data
- stage
- module
- cycle
- deciphering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种基于FPGA高速串行IO的保密通信方法,包括:在FPGA芯片中构建数据传输通道;在通信发送端接入通信传输网络处配置一个所述构建有数据传输通道的FPGA芯片,在通信接收端接入通信传输网络处配置一个所述构建有数据传输通道的FPGA芯片;在通信发送端,将待发送的数据传输进入FPGA芯片,在数据传输通道内进行一次传输,完成数据加密,然后从FPGA芯片输出,进入通信传输网;在通信接收端,将从通信传输网接收的数据先传输进入FPGA芯片,在数据传输通道内进行一次传输,完成数据解密,然后从FPGA芯片输出,进入通信终端。利用本发明,提高了数据传输速率,降低了设备负担。
Description
技术领域
本发明涉及保密通信技术领域,尤其涉及一种基于FPGA高速串行IO的保密通信方法。
背景技术
当代通信最重要的特点之一是带宽大,而且随着技术的进步,带宽越来越大,目前已经高于10Gbit/s。近年来由于信息安全问题日益增多,通信的保密性与安全性也成为一个重要的问题。为了增加通信的保密性,通常的做法是基于数学操作引入一个复杂的算法,在数据发送端对数据进行加密,将明文转换为密文后进行传输,在数据接收端对数据进行解密,解密后得到原始数据。一般所使用的算法有DES、MD5和RSA等加解密算法。上述数据传输方法有一个缺点,就是加解密运算过程复杂,运算量大,速度慢。当代高速通信中的数据量很大,如果运用复杂的算法对这些数据进行处理,需要较长的时间,也会给硬件设备带来较大的负担。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于克服上述算法加解密所面临的问题,提供一种基于FPGA高速串行IO的保密通信方法,以提高数据传输速率,降低设备负担。
(二)技术方案
为达到上述目的,本发明提供了一种基于FPGA高速串行IO的保密通信方法,包括:
在FPGA芯片中构建数据传输通道,该数据传输通道包括一个TransceiverRX模块、一个RAM模块、一个加/解密寄存器模块、一个M序列模块和一个TransceiverTX模块;
在通信发送端接入通信传输网络处配置一个所述构建有数据传输通道的FPGA芯片,在通信接收端接入通信传输网络处配置一个所述构建有数据传输通道的FPGA芯片;
在通信发送端,将待发送的数据传输进入FPGA芯片,在数据传输通道内进行一次传输,完成数据加密,然后从FPGA芯片输出,进入通信传输网;
在通信接收端,将从通信传输网接收的数据先传输进入FPGA芯片,在数据传输通道内进行一次传输,完成数据解密,然后从FPGA芯片输出,进入通信终端。
上述方案中,数据在FPGA芯片的数据传输通道内完成一次传输后就能实现加密或解密,并且,在数据传输通道内进行的加密和解密采用完全相同的硬件结构和工作流程,加密端与解密端具有对称性。
上述方案中,在通信发送端,数据加密的实现过程如下:
通信网络中待传输的原文数据串行输入FPGA芯片的TransceiverRX模块,每传输一个比特占用时间T;
TransceiverRX模块对输入的原文数据进行串转并,输出32位并行RXDATA数据至RAM模块,每32T输出一个数据;
RAM模块由4个存储位宽为32位、存储深度为126的BlockRAM组成,这四个BlockRAM采用统一的时钟,每隔32T同时进行一次读/写操作,且整个RAM模块采用一个统一地址信号address0,address0每32T增加1,周期性地从0加到125,跳回到0,再加到125,再跳回到0……;每一个address0循环周期为126×32T=4032T;定义address0从0到125这个过程为一个周期cycle,持续时间4032T,定义cycle0、cycle1、cycle2和cycle3为连续的4个cycle,在每一个cycle内,4个BlockRAM分别进行写、读、写、读操作;
加/解密寄存器模块由四个存储位宽为32位,存储深度为63的BlockRAM组成,分别命名为RAM10,RAM11,RAM12和RAM13,它们也采用RAM模块的统一时钟CLK,并且4个存储器共享一个地址信号address1,address1随着address0同步地从0开始逐渐加1,只不过当其从0加到62时就跳回到0,再接着从0往上加;这样,address1的周期为address0的一半;定义address1从0加到62的过程为一个subcycle,一个cycle包含2个subcycle;工作时,RAM10和RAM11为一组,共同工作于一个cycle,命名为group0;RAM12和RAM13为一组,共同工作于一个cycle,命名为group1;整个加/解密寄存器模块协同RAM模块工作于cycle1和cycle2阶段;
M序列模块中含有2个6级M序列发生器:M0和M1,每个6级M序列发生器均由6个寄存器组成,同时还有一个存放6位密钥的密钥存储器RAM2;一个6级M序列发生器产生的随机序列循环周期为63个,且输出m值的序列由6个寄存器的初始输出值决定,这6个初始值作为加密的密钥;在工作时M0和M1以2个cycle2为周期,交替地输出m序列,协助加/解密寄存器模块完成cycle2阶段的工作;
从RAM模块输出的数据,被传输到TransceiverTX模块的TXDATA端,在TransceiverTX中进行并串转换,从TX_P和TX_N端串行输出,此时输出的数据已经是经过加密的密文。
上述方案中,在通信接收端,即数据解密端,数据解密的实现过程如下:
从通信网络中接收的密文数据串行输入FPGA芯片的TransceiverRX模块,每传输一个比特占用时间T;
TransceiverRX模块对密文数据进行串转并,输出32位并行数据RXDATA至RAM模块,每32T输出一个数据;
RAM模块由4个存储位宽为32位、存储深度为126的BlockRAM组成,这四个BlockRAM采用统一的时钟,每隔32T同时进行一次读/写操作,且整个RAM模块采用一个统一地址信号address0,address0每32T增加1,周期性地从0加到125,跳回到0,再加到125,再跳回到0……;每一个address0循环周期为126×32T=4032T;定义address0从0到125这个过程为一个周期cycle,持续时间4032T,定义cycle0、cycle1、cycle2和cycle3为连续的4个cycle,在每一个cycle内,4个BlockRAM分别进行写、读、写、读操作;
加/解密寄存器模块由四个存储位宽为32位,存储深度为63的BlockRAM组成,分别命名为RAM10,RAM11,RAM12,RAM13,它们也采用RAM模块的统一时钟CLK,并且4个存储器共享一个地址信号address1,address1随着address0同步地从0开始逐渐加1,只不过当其从0加到62时就跳回到0,再接着从0往上加;这样,address1的周期为address0的一半;定义address1从0加到62的过程为一个subcycle,一个cycle包含2个subcycle;工作时,RAM10和RAM11为一组,共同工作于一个cycle,命名为group0;RAM12和RAM13为一组,共同工作于一个cycle,命名为group1;整个加/解密寄存器模块协同RAM模块工作于cycle1和cycle2阶段;
M序列模块中含有2个6级M序列发生器:M0和M1,每个发生器均由6个寄存器组成,同时还有一个存放6位密钥的密钥存储器RAM2,RAM2中的密钥与加密端的保持一致;一个6级M序列发生器产生的随机序列循环周期为63个,且输出m值的序列由6个寄存器的初始输出值决定,这6个初始值作为解密密钥;在工作时M0和M1以2个cycle2为周期,交替地输出m序列,协助加/解密寄存器模块完成cycle2阶段的工作;
从RAM模块输出的数据,被传输到TransceiverTX模块的TXDATA端,在TransceiverTX中进行并串转换,从TX_P和TX_N端串行输出,此时输出的数据时经过解密的原文数据。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、本发明提供的这种基于FPGA高速串行IO的保密通信方法,对数据加密是以126个32位数据为一组进行的,每个126数据组都有一个对应的6位加密密钥,对应63种可能性。因此在FPGA芯片中相当于对通信数据进行了重新组帧,每一个帧含有126*4=504个字节数据。传输N帧数据,就对应有63N种可能性,而当代通信数据量巨大,N值将会非常大,破译将会非常困难。例如,传输一个10KB的文件,破解需要尝试6320种可能性;传输1M的文件,破解就需要尝试632000种可能性。本发明的解密部分与加密部分完全一样,只要同一个帧在解密时采用和加密时同样的密钥就可对数据进行恢复。
2、本发明提供的这种基于FPGA高速串行IO的保密通信方法,系统内部并行数据的位数可以灵活调整,并非一定要32位,对于速率相对较低的通信,比如低于3Gbit/s,可以将32位调整为16位,使得帧长度变为126*2=252个字节,这样可以使加密后的数据混乱度更高,加密效果更好。而高速的通信,比如高于10Gbit/s,也可以将并行数据调整为64位,提高系统内部工作效率,因此提高了数据传输速率,降低了设备负担。
附图说明
图1是本发明提供的基于FPGA高速串行IO的保密通信的示意图;
图2是依照本发明实施例在加密端各个组成模块以及其相互关系示意图;
图3是图2中加密端RAM模块工作过程示意图;
图4是图2中加/解密寄存器模块在数据写入阶段工作示意图;
图5是图2中加/解密寄存器模块在数据读出阶段工作示意图;
图6是图2中加密端RAM模块和加/解密寄存器模块协同工作时各存储器工作状态随时间的变化示意图;
图7是图2中加/解密寄存器模块中各存储器工作状态随时间变化示意图;
图8是图2中加密端M序列模块中2个6级M序列产生器的组成示意图;
图9是图2中加密端M序列模块工作过程示意图。
图10是依照本发明实施例在解密端各个组成模块以及其相互关系示意图;
图11是图10中解密端RAM模块工作过程示意图;
图12是图10中加/解密寄存器模块在数据写入阶段工作示意图;
图13是图10中加/解密寄存器模块在数据读出阶段工作示意图;
图14是图10中解密端RAM模块和加/解密寄存器模块协同工作时各存储器工作状态随时间的变化示意图;
图15是图10中加/解密寄存器模块中各存储器工作状态随时间变化示意图;
图16是图10中解密端M序列模块中2个6级M序列产生器的组成示意图;
图17是图10中解密端M序列模块工作过程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明提供的是一种基于FPGA高速串行IO的保密通信方法,该方法包括:
在FPGA芯片中构建数据传输通道,该数据传输通道包括一个TransceiverRX模块、一个RAM模块、一个加/解密寄存器模块、一个M序列模块和一个TransceiverTX模块;
在通信发送端接入通信传输网络处配置一个所述构建有数据传输通道的FPGA芯片,在通信接收端接入通信传输网络处配置一个所述构建有数据传输通道的FPGA芯片;
在通信发送端,将待发送的数据传输进入FPGA芯片,在数据传输通道内进行一次传输,完成数据加密,然后从FPGA芯片输出,进入通信传输网;
在通信接收端,将从通信传输网接收的数据先传输进入FPGA芯片,在数据传输通道内进行一次传输,完成数据解密,然后从FPGA芯片输出,进入通信终端。
其中,数据在FPGA芯片的数据传输通道内完成一次传输后就能实现加密或解密,并且,在数据传输通道内进行的加密和解密采用完全相同的硬件结构和工作流程,加密端与解密端具有对称性。
本发明所使用的硬件设备主要为FPGA芯片。在通信发送端,即数据加密端,数据加密的实现过程如下:
通信网络中待传输的原文数据串行输入FPGA芯片的TransceiverRX模块,其中串行输入速率可以随外界通信网络速率要求灵活调整,最高比特率取决于所使用的FPGA芯片内部的Transceiver核,比如Xilinx的7系列FPGA芯片可以最高支持13.1Gbit/s。每传输一个比特占用时间T。
在TransceiverRX模块中,进行串转并,输出32位并行数据RXDATA,每32T输出一个数据。
从TransceiverRX模块中输出的RXDATA数据,进入一个随机存储器模块(RAM模块)。该模块由4个存储位宽为32位,存储深度为126的BlockRAM组成,在此分别命名为RAM00,RAM01,RAM02,RAM03。这四个BlockRAM采用统一的时钟:由TransceiverRX模块提供一个周期为32T的时钟信号CLK。也就是说,它们每隔32T同时进行一次读/写操作。并且整个RAM模块采用一个统一地址信号address0,因此,每次读写操作时,4个BlockRAM进行读写操作的内部地址相同。address0每32T增加1,周期性地从0加到125,跳回到0,再加到125,再跳回到0......每一个address0循环周期为126*32T=4032T。为了方便说明,定义address0从0到125这个过程为一个周期cycle,持续时间4032T,定义cycle0,cycle1,cycle2,cycle3,cycle4为连续的4个cycle。在每一个cycle内,4个BlockRAM分别进行写,读,写,读操作。每一个RAM都有一个独立的变量Wea控制其操作:Wea=1时,把外来数据写入存储器,同时也读出数据;Wea=0时,从存储器中读出数据。
在cycle0阶段,126个RXDATA依次写入其中一个BlockRAM中,并且根据传输顺序依次进入在地址为0~125的存储单元,为了便于描述,令此时存入RAM00。接着进入cycle1阶段,在cycle1阶段,RAM00中的126个数据依次读出到一个加/解密寄存器模块。再接着进入cycle2阶段,从加/解密寄存器模块中输出126个数据,依次又写入RAM00内部;最后进入cycle3阶段,将RAM00中存储的126个数据依地址顺序逐个读出,进入TransceiverRX模块。4个BlockRAM各自按cycle0,cycle1,cycle2,cycle3的顺序工作着,但是彼此时间错开,在任何一个时间点,都各自有一个RAM工作于cycle0,cycle1,cycle2,cycle3阶段。因此,整个RAM模块能够连续不停地进行输入输出,实现连续工作。
加/解密寄存器模块由四个存储位宽为32位,存储深度为63的BlockRAM组成,分别命名为RAM10,RAM11,RAM12,RAM13。它们也采用RAM模块的统一时钟CLK,并且4个存储器共享一个地址信号address1,address1随着address0同步地从0开始逐渐加1,只不过当其从0加到62时就跳回到0,再接着从0往上加。这样,address1的周期为address0的一半。定义address1从0加到62的过程为一个subcycle,一个cycle包含2个subcycle。工作时,RAM10和RAM11为一组,共同工作于一个cycle,命名为group0;RAM12和RAM13为一组,共同工作于一个cycle,命名为group1。整个加/解密寄存器模块协同RAM模块工作于cycle1和cycle2阶段。
在cycle1阶段,group0或者group1读取来自RAM模块的数据,并对其进行存储,然后在cycle2阶段将数据再输出给RAM模块。假如此时group0工作于cycle1阶段,则group2共作于cycle2阶段。cycle1分为两个阶段:subcycle10和subcycle11。在subcycle10阶段,来自RAM模块的63个数据依次写入RAM10的0-62地址存储单元;在subcycle11阶段,来自RAM模块的63个数据依次写入RAM11的0-62地址存储单元。
然后group10进入cycle2阶段,也分为两个子阶段:在subcycle20阶段,每个CLK周期内同时读出一个RAM10和RAM11相同地址中的数据,分别为dout10和dout11,同时M序列模块也输出一个m值,如果m=0,则将dout10输出;如果m=1则将dout11输出。在subcycle21阶段,每个CLK周期内也同时读出一个RAM10和RAM11相同地址中的数据,分别为dout10和dout11,同时M序列模块输出一个m值,如果m=0,则将dout11输出;如果m=1则将dout10输出。
M序列模块中含有2个6级M序列发生器:M0和M1,每个发生器均由6个寄存器组成。同时还有一个存放6位密钥的密钥存储器RAM2。一个6级M序列发生器产生的随机序列循环周期为63个,且输出m值的序列由6个寄存器的初始输出值决定,这6个初始值作为加密的密钥。在工作时M0和M1以2个cycle2为周期,交替地输出m序列,协助加/解密寄存器模块完成cycle2阶段的工作。命名前后2个连续cycle2为cycle20和cycle21。在cycle20阶段,RAM2输出一个6位密钥对M0进行初始化,然后M0暂时处于等待状态;同时,CLK作为时钟信号加到M1上,因此M1上每一个CLK周期输出一个m值,整个cycle20阶段M1输出126个m值,执行了2次m值循环。在cycle21阶段,RAM2输出一个6位密钥对M1进行初始化,然后M1暂时处于等待状态;同时,CLK作为时钟信号加到M0上,因此M0上每一个CLK周期输出一个m值,整个cycle21阶段M0输出126个m值,执行了2次m值循环。控制RAM2的时钟周期等于126个CLK周期,即一个cycle周期。
从RAM模块输出的数据,被传输到TransceiverTX模块的TXDATA端,在TransceiverTX中进行并串转换,从TX_P和TX_N端串行输出。此时输出的数据已经是经过加密的密文。速率可以随外界通信速率要求灵活调整,最高比特率取决于所使用的FPGA芯片内部的Transceiver核,比如Xilinx的7系列FPGA芯片可以最高支持13.1Gbit/s。
在通信接收端,即数据解密端,数据解密的实现过程如下:
从通信网络中接收的密文数据串行输入FPGA芯片的TransceiverRX模块,其中串行输入速率可以随通信网络速率灵活调整,最高比特率取决于所使用的FPGA芯片内部的Transceiver核,比如Xilinx的7系列FPGA芯片可以最高支持13.1Gbit/s。每传输一个比特占用时间T。
在TransceiverRX模块中,进行串转并,输出32位并行数据RXDATA,每32T输出一个数据。
从TransceiverRX模块中输出的RXDATA数据,进入RAM模块。该模块由4个存储位宽为32位,存储深度为126的BlockRAM组成,在此分别命名为RAM00,RAM01,RAM02,RAM03。这四个BlockRAM采用统一的时钟:由TransceiverRX模块提供一个周期为32T的时钟信号CLK。也就是说,它们每隔32T同时进行一次读/写操作。并且整个RAM模块采用一个统一地址信号address0,因此,每次读写操作时,4个BlockRAM进行读写操作的内部地址相同。address0每32T增加1,周期性地从0加到125,跳回到0,再加到125,再跳回到0......每一个address0循环周期为126*32T=4032T。为了方便说明,定义address0从0到125这个过程为一个周期cycle,持续时间4032T,定义cycle0,cycle1,cycle2,cycle3,cycle4为连续的4个cycle。在每一个cycle内,4个BlockRAM分别进行写,读,写,读操作。每一个RAM都有一个独立的变量Wea控制其操作:Wea=1时,把外来数据写入存储器,同时也读出数据;Wea=0时,从存储器中读出数据。
在cycle0阶段,126个RXDATA依次写入其中一个BlockRAM中,并且根据传输顺序依次进入在地址为0~125的存储单元,为了便于描述,令此时存入RAM00。接着进入cycle1阶段,在cycle1阶段,RAM00中的126个数据依次读出到一个加/解密寄存器模块。再接着进入cycle2阶段,从加/解密寄存器模块中输出126个数据,依次又写入RAM00内部;最后进入cycle3阶段,将RAM00中存储的126个数据依地址顺序逐个读出,进入TransceiverRX模块。4个BlockRAM各自按cycle0,cycle1,cycle2,cycle3的顺序工作着,但是彼此时间错开,在任何一个时间点,都各自有一个RAM工作于cycle0,cycle1,cycle2,cycle3阶段。因此,整个RAM模块能够连续不停地进行输入输出,实现连续工作。
加/解密寄存器模块由四个存储位宽为32位,存储深度为63的BlockRAM组成,分别命名为RAM10,RAM11,RAM12,RAM13。它们也采用RAM模块的统一时钟CLK,并且4个存储器共享一个地址信号address1,address1随着address0同步地从0开始逐渐加1,只不过当其从0加到62时就跳回到0,再接着从0往上加。这样,address1的周期为address0的一半。定义address1从0加到62的过程为一个subcycle,一个cycle包含2个subcycle。工作时,RAM10和RAM11为一组,共同工作于一个cycle,命名为group0;RAM12和RAM13为一组,共同工作于一个cycle,命名为group1。整个加/解密寄存器模块协同RAM模块工作于cycle1和cycle2阶段。
在cycle1阶段,group0或者group1读取来自RAM模块的数据,并对其进行存储,然后在cycle2阶段将数据再输出给RAM模块。假如此时group0工作于cycle1阶段,则group2共作于cycle2阶段。cycle1分为两个阶段:subcycle10和subcycle11。在subcycle10阶段,来自RAM模块的63个数据依次写入RAM10的0-62地址存储单元;在subcycle11阶段,来自RAM模块的63个数据依次写入RAM11的0-62地址存储单元。
然后group10进入cycle2阶段,也分为两个子阶段:在subcycle20阶段,每个CLK周期内同时读出一个RAM10和RAM11相同地址中的数据,分别为dout10和dout11,同时M序列模块也输出一个m值,如果m=0,则将dout10输出;如果m=1则将dout11输出。在subcycle21阶段,每个CLK周期内也同时读出一个RAM10和RAM11相同地址中的数据,分别为dout10和dout11,同时M序列模块输出一个m值,如果m=0,则将dout11输出;如果m=1则将dout10输出。
M序列模块中含有2个6级M序列发生器:M0和M1,每个发生器均由6个寄存器组成。同时还有一个存放6位密钥的密钥存储器RAM2。RAM2中的密钥与加密端的保持一致。一个6级M序列发生器产生的随机序列循环周期为63个,且输出m值的序列由6个寄存器的初始输出值决定,这6个初始值作为解密密钥。在工作时M0和M1以2个cycle2为周期,交替地输出m序列,协助加/解密寄存器模块完成cycle2阶段的工作。命名前后2个连续cycle2为cycle20和cycle21。在cycle20阶段,RAM2输出一个6位密钥对M0进行初始化,然后M0暂时处于等待状态;同时,CLK作为时钟信号加到M1上,因此M1上每一个CLK周期输出一个m值,整个cycle20阶段M1输出126个m值,执行了2次m值循环。在cycle21阶段,RAM2输出一个6位密钥对M1进行初始化,然后M1暂时处于等待状态;同时,CLK作为时钟信号加到M0上,因此M0上每一个CLK周期输出一个m值,整个cycle21阶段M0输出126个m值,执行了2次m值循环。控制RAM2的时钟周期等于126个CLK周期,即一个cycle周期。
从RAM模块输出的数据,被传输到TransceiverTX模块的TXDATA端,在TransceiverTX中进行并串转换,从TX_P和TX_N端串行输出。此时输出的数据时经过解密的原文数据。速率可以随外界通信速率要求灵活调整,最高比特率取决于所使用的FPGA芯片内部的Transceiver核,比如Xilinx的7系列FPGA芯片可以最高支持13.1Gbit/s。
下面结合附图和实施例对本发明进一步说明。
如图1所示,本发明的保密通信方法是这样实施的:在通信发送端,先进入加密FPGA芯片内部,在内部数据通道完成加密,然后在将加密后的数据发送出去。在通信接收端,将接收到的密文数据先通过解密FPGA芯片内部的数据通道,完成解密,恢复原文数据后传输进入通信接收端。
如图2所示,加密端所要用到的硬件资源主要是TransceiverRX、TransceiverTX和BlockRAM。其中TransceiverTX和TransceiverRX同属于FPGA芯片内部的硬核Transceiver,该硬核同时又为后面的存储器提供时钟。所使用的Transceiver硬核性能越好,该加密系统所能支持的最高通信速率就越高。比如Xilinx的7系列FPGA芯片中,GTHTransceiver支持的最高速率可以达到13.1Gbit/s。用到的BlockRAM总共有9个(包括一个用于M序列模块存储加密密钥),而FPGA芯片中自带有BlockRAM,例如XC7K325T芯片上有445个36KbBlockRAM,因此能保证本方案的实施。加密实施过程中,首先TransceiverRX从外面的通信线路中接收数据,串转并后将数据传输进入RAM模块,RAM模块将数据写入加/解密寄存器模块,接着加/解密寄存器模块在M序列模块的控制下将数据又输回RAM模块,此时数据顺序已经被打乱,最后RAM模块将数据送入TransceiverTX,并转串后发送给外界通信网络。
如图3所示,在RAM模块中,任一时刻,4个BlockRAM分别所处的工作状态为:周期cycle0中,从TransceiverRX写入数据;周期cycle1中,读出数据到加/解密寄存器模块;周期cycle2中,从加/解密寄存器模块写入数据;周期cycle3中,读出数据到TransceiverTX。它们的操作地址是同步变化的,在一个cycle中,从0加到125。
如图4所示,加/解密寄存器模块中RAM10和RAM11协同RAM模块工作于周期cycle1中时,分为两个子阶段:subcycle10和subcycle11。在subcycle10阶段,来自RAM模块的数据依次存入RAM10,而在subcycle11阶段,数据依次存入RAM11。任何时刻RAM10和RAM11的地址相同。
如图5所示,加/解密寄存器模块中RAM10和RAM11协同RAM模块工作于周期cycle2中时,每个时钟周期同时从RAM10和RAM11各读出一个数,然后由m值来判断,取哪一个数输出。也分两个子阶段:subcycle20和subcycle21。在subcycle20时,若m=0则输出dout10,若m=1则输出dout11;在subcycle21时,若m=0则输出dout11,若m=1则输出dout10。任何时刻RAM10和RAM11的地址相同。
图6和图7展示了随着时间的推移,各个存储器模块所处的工作阶段。
如图8所示,两个M序列发生器M1和M2都由6个寄存器组成,其中m1~m6为6个寄存器的输出初始状态,由加密密钥来控制。
如图9所示,M序列发生模块协同加/解密寄存器模块完成cycle2阶段的任务,在具体执行过程中,M1和M2轮流工作,以2个cycle2周期为一轮,cycle20和cycle21为前后两个相邻的周期。在cycle20阶段:密钥存储器RAM2输出一个6位密钥对M0进行初始化,然后M0暂时不加时钟,处于等待状态;M1接收时钟信号,每个CLK周期输出一个m值。在cycle21阶段:RAM2输出一个6位密钥对M1进行初始化,然后M1暂时不加时钟,处于等待状态;M1接收时钟信号,每个CLK周期输出一个m值。
如图10至图17所示,在通信接收端,即数据解密端,数据解密的实现过程如下:
如图10所示,解密端所要用到的硬件资源主要是TransceiverRX、TransceiverTX和BlockRAM。其中TransceiverTX和TransceiverRX同属于FPGA芯片内部的硬核Transceiver,该硬核同时又为后面的存储器提供时钟。所使用的Transceiver硬核性能越好,该系统所能支持的最高通信速率就越高。比如Xilinx的7系列FPGA芯片中,GTHTransceiver支持的最高速率可以达到13.1Gbit/s。用到的BlockRAM总共有9个(包括一个用于M序列模块存储解密密钥),而FPGA芯片中自带有BlockRAM,例如XC7K325T芯片上有445个36KbBlockRAM,因此能保证本方案的实施。解密实施过程中,首先TransceiverRX从外面的通信线路中接收数据,串转并后将数据传输进入RAM模块,RAM模块将数据写入加/解密寄存器模块,接着加/解密寄存器模块在M序列模块的控制下将数据又输回RAM模块,此时数据顺序已经被还原,完成解密,最后RAM模块将数据送入TransceiverTX,并转串后发送给通信接收端。
如图11所示,在RAM模块中,任一时刻,4个BlockRAM分别所处的工作状态为:周期cycle0中,从TransceiverRX写入数据;周期cycle1中,读出数据到加/解密寄存器模块;周期cycle2中,从加/解密寄存器模块写入数据;周期cycle3中,读出数据到TransceiverTX。它们的操作地址是同步变化的,在一个cycle中,从0加到125。
如图12所示,加/解密寄存器模块中RAM10和RAM11协同RAM模块工作于周期cycle1中时,分为两个子阶段:subcycle10和subcycle11。在subcycle10阶段,来自RAM模块的数据依次存入RAM10,而在subcycle11阶段,数据依次存入RAM11。任何时刻RAM10和RAM11的地址相同。
如图13所示,加/解密寄存器模块中RAM10和RAM11协同RAM模块工作于周期cycle2中时,每个时钟周期同时从RAM10和RAM11各读出一个数,然后由m值来判断,取哪一个数输出。也分两个子阶段:subcycle20和subcycle21。在subcycle20时,若m=0则输出dout10,若m=1则输出dout11;在subcycle21时,若m=0则输出dout11,若m=1则输出dout10。任何时刻RAM10和RAM11的地址相同。
图14和图15展示了随着时间的推移,各个存储器模块所处的工作阶段。
如图16所示,两个M序列发生器M1和M2都由6个寄存器组成,其中m1~m6为6个寄存器的输出初始状态,由解密密钥来控制。
如图17所示,M序列发生模块协同加/解密寄存器模块完成cycle2阶段的任务,在具体执行过程中,M1和M2轮流工作,以2个cycle2周期为一轮,cycle20和cycle21为前后两个相邻的周期。在cycle20阶段:密钥存储器RAM2输出一个6位密钥对M0进行初始化,然后M0暂时不加时钟,处于等待状态;M1接收时钟信号,每个CLK周期输出一个m值。在cycle21阶段:RAM2输出一个6位密钥对M1进行初始化,然后M1暂时不加时钟,处于等待状态;M1接收时钟信号,每个CLK周期输出一个m值。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种基于FPGA高速串行IO的保密通信方法,其特征在于,包括:
在FPGA芯片中构建数据传输通道,该数据传输通道包括一个TransceiverRX模块、一个RAM模块、一个加/解密寄存器模块、一个M序列模块和一个TransceiverTX模块;
在通信发送端接入通信传输网络处配置一个所述构建有数据传输通道的FPGA芯片,在通信接收端接入通信传输网络处配置一个所述构建有数据传输通道的FPGA芯片;
在通信发送端,将待发送的数据传输进入FPGA芯片,在数据传输通道内进行一次传输,完成数据加密,然后从FPGA芯片输出,进入通信传输网;
在通信接收端,将从通信传输网接收的数据先传输进入FPGA芯片,在数据传输通道内进行一次传输,完成数据解密,然后从FPGA芯片输出,进入通信终端;
其中,在通信发送端,数据加密的实现过程如下:
通信网络中待传输的原文数据串行输入FPGA芯片的TransceiverRX模块,每传输一个比特占用时间T;
TransceiverRX模块对输入的原文数据进行串转并,输出32位并行RXDATA数据至RAM模块,每32T输出一个数据;
RAM模块由4个存储位宽为32位、存储深度为126的BlockRAM组成,这四个BlockRAM采用统一的时钟,每隔32T同时进行一次读/写操作,且整个RAM模块采用一个统一地址信号address0,address0每32T增加1,周期性地从0加到125,跳回到0,再加到125,再跳回到0……;每一个address0循环周期为126×32T=4032T;定义address0从0到125这个过程为一个周期cycle,持续时间4032T,定义cycle0、cycle1、cycle2和cycle3为连续的4个cycle,在每一个cycle内,4个BlockRAM分别进行写、读、写、读操作;
加/解密寄存器模块由四个存储位宽为32位,存储深度为63的BlockRAM组成,分别命名为RAM10,RAM11,RAM12和RAM13,它们也采用RAM模块的统一时钟CLK,并且4个存储器共享一个地址信号address1,address1随着address0同步地从0开始逐渐加1,只不过当其从0加到62时就跳回到0,再接着从0往上加;这样,address1的周期为address0的一半;定义address1从0加到62的过程为一个subcycle,一个cycle包含2个subcycle;工作时,RAM10和RAM11为一组,共同工作于一个cycle,命名为group0;RAM12和RAM13为一组,共同工作于一个cycle,命名为group1;整个加/解密寄存器模块协同RAM模块工作于cycle1和cycle2阶段;
M序列模块中含有2个6级M序列发生器:M0和M1,每个6级M序列发生器均由6个寄存器组成,同时还有一个存放6位密钥的密钥存储器RAM2;一个6级M序列发生器产生的随机序列循环周期为63个,且输出m值的序列由6个寄存器的初始输出值决定,这6个初始值作为加密的密钥;在工作时M0和M1以2个cycle2为周期,交替地输出m序列,协助加/解密寄存器模块完成cycle2阶段的工作;
从RAM模块输出的数据,被传输到TransceiverTX模块的TXDATA端,在TransceiverTX中进行并串转换,从TX_P和TX_N端串行输出,此时输出的数据已经是经过加密的密文;
在通信接收端,即数据解密端,数据解密的实现过程如下:
从通信网络中接收的密文数据串行输入FPGA芯片的TransceiverRX模块,每传输一个比特占用时间T;
TransceiverRX模块对密文数据进行串转并,输出32位并行数据RXDATA至RAM模块,每32T输出一个数据;
RAM模块由4个存储位宽为32位、存储深度为126的BlockRAM组成,这四个BlockRAM采用统一的时钟,每隔32T同时进行一次读/写操作,且整个RAM模块采用一个统一地址信号address0,address0每32T增加1,周期性地从0加到125,跳回到0,再加到125,再跳回到0……;每一个address0循环周期为126×32T=4032T;定义address0从0到125这个过程为一个周期cycle,持续时间4032T,定义cycle0、cycle1、cycle2和cycle3为连续的4个cycle,在每一个cycle内,4个BlockRAM分别进行写、读、写、读操作;
加/解密寄存器模块由四个存储位宽为32位,存储深度为63的BlockRAM组成,分别命名为RAM10,RAM11,RAM12,RAM13,它们也采用RAM模块的统一时钟CLK,并且4个存储器共享一个地址信号address1,address1随着address0同步地从0开始逐渐加1,只不过当其从0加到62时就跳回到0,再接着从0往上加;这样,address1的周期为address0的一半;定义address1从0加到62的过程为一个subcycle,一个cycle包含2个subcycle;工作时,RAM10和RAM11为一组,共同工作于一个cycle,命名为group0;RAM12和RAM13为一组,共同工作于一个cycle,命名为group1;整个加/解密寄存器模块协同RAM模块工作于cycle1和cycle2阶段;
M序列模块中含有2个6级M序列发生器:M0和M1,每个发生器均由6个寄存器组成,同时还有一个存放6位密钥的密钥存储器RAM2,RAM2中的密钥与加密端的保持一致;一个6级M序列发生器产生的随机序列循环周期为63个,且输出m值的序列由6个寄存器的初始输出值决定,这6个初始值作为解密密钥;在工作时M0和M1以2个cycle2为周期,交替地输出m序列,协助加/解密寄存器模块完成cycle2阶段的工作;
从RAM模块输出的数据,被传输到TransceiverTX模块的TXDATA端,在TransceiverTX中进行并串转换,从TX_P和TX_N端串行输出,此时输出的数据是经过解密的原文数据。
2.根据权利要求1所述的保密通信方法,其特征在于,数据在FPGA芯片的数据传输通道内完成一次传输后就能实现加密或解密,并且,在数据传输通道内进行的加密和解密采用完全相同的硬件结构和工作流程,加密端与解密端具有对称性。
3.根据权利要求1所述的保密通信方法,其特征在于,在数据加密的实现过程中,每一个BlockRAM都有一个独立的变量Wea控制其操作:Wea=1时,把外来数据写入存储器,同时也读出数据;Wea=0时,从存储器中读出数据。
4.根据权利要求3所述的保密通信方法,其特征在于,在cycle0阶段,126个RXDATA数据依次写入其中一个BlockRAM中,并且根据传输顺序依次进入在地址为0~125的存储单元,为了便于描述,令此时存入RAM00;接着进入cycle1阶段,在cycle1阶段,RAM00中的126个数据依次读出到一个加/解密寄存器模块;再接着进入cycle2阶段,从加/解密寄存器模块中输出126个数据,依次又写入RAM00内部;最后进入cycle3阶段,将RAM00中存储的126个数据依地址顺序逐个读出,进入TransceiverRX模块。
5.根据权利要求4所述的保密通信方法,其特征在于,4个BlockRAM各自按cycle0、cycle1、cycle2、cycle3的顺序工作着,但是彼此时间错开,在任何一个时间点,都各自有一个RAM工作于cycle0、cycle1、cycle2、cycle3阶段;因此,整个RAM模块能够连续不停地进行输入输出,实现连续工作。
6.根据权利要求1所述的保密通信方法,其特征在于,在数据加密的实现过程,在加/解密寄存器模块中,在cycle1阶段,group0或者group1读取来自RAM模块的数据,并对其进行存储,然后在cycle2阶段将数据再输出给RAM模块;假如此时group0工作于cycle1阶段,则group1工作于cycle2阶段;cycle1分为两个阶段:subcycle10和subcycle11;在subcycle10阶段,来自RAM模块的63个数据依次写入RAM10的0-62地址存储单元;在subcycle11阶段,来自RAM模块的63个数据依次写入RAM11的0-62地址存储单元;
然后group0进入cycle2阶段,也分为两个子阶段:在subcycle20阶段,每个CLK周期内同时读出一个RAM10和RAM11相同地址中的数据,分别为dout10和dout11,同时M序列模块也输出一个m值,如果m=0,则将dout10输出;如果m=1则将dout11输出;在subcycle21阶段,每个CLK周期内也同时读出一个RAM10和RAM11相同地址中的数据,分别为dout10和dout11,同时M序列模块输出一个m值,如果m=0,则将dout11输出;如果m=1则将dout10输出。
7.根据权利要求1所述的保密通信方法,其特征在于,在数据加密的实现过程,在M序列模块中,命名前后2个连续cycle2为cycle20和cycle21;
在cycle20阶段,RAM2输出一个6位密钥对M0进行初始化,然后M0暂时处于等待状态;同时,CLK作为时钟信号加到M1上,因此M1上每一个CLK周期输出一个m值,整个cycle20阶段M1输出126个m值,执行了2次m值循环;
在cycle21阶段,RAM2输出一个6位密钥对M1进行初始化,然后M1暂时处于等待状态;同时,CLK作为时钟信号加到M0上,因此M0上每一个CLK周期输出一个m值,整个cycle21阶段M0输出126个m值,执行了2次m值循环;
控制RAM2的时钟周期等于126个CLK周期,即一个cycle周期。
8.根据权利要求1所述的方法,其特征在于,在数据解密的实现过程中,每一个BlockRAM都有一个独立的变量Wea控制其操作:Wea=1时,把外来数据写入存储器,同时也读出数据;Wea=0时,从存储器中读出数据。
9.根据权利要求8所述的方法,其特征在于,在cycle0阶段,126个RXDATA数据依次写入其中一个BlockRAM中,并且根据传输顺序依次进入在地址为0~125的存储单元,为了便于描述,令此时存入RAM00;接着进入cycle1阶段,在cycle1阶段,RAM00中的126个数据依次读出到一个加/解密寄存器模块;再接着进入cycle2阶段,从加/解密寄存器模块中输出126个数据,依次又写入RAM00内部;最后进入cycle3阶段,将RAM00中存储的126个数据依地址顺序逐个读出,进入TransceiverRX模块。
10.根据权利要求9所述的方法,其特征在于,4个BlockRAM各自按cycle0、cycle1、cycle2、cycle3的顺序工作着,但是彼此时间错开,在任何一个时间点,都各自有一个RAM工作于cycle0、cycle1、cycle2、cycle3阶段;因此,整个RAM模块能够连续不停地进行输入输出,实现连续工作。
11.根据权利要求1所述的方法,其特征在于,在数据解密的实现过程,在加/解密寄存器模块中,在cycle1阶段,group0或者group1读取来自RAM模块的数据,并对其进行存储,然后在cycle2阶段将数据再输出给RAM模块;假如此时group0工作于cycle1阶段,则group1工作于cycle2阶段;cycle1分为两个阶段:subcycle10和subcycle11;在subcycle10阶段,来自RAM模块的63个数据依次写入RAM10的0-62地址存储单元;在subcycle11阶段,来自RAM模块的63个数据依次写入RAM11的0-62地址存储单元;
然后group0进入cycle2阶段,也分为两个子阶段:在subcycle20阶段,每个CLK周期内同时读出一个RAM10和RAM11相同地址中的数据,分别为dout10和dout11,同时M序列模块也输出一个m值,如果m=0,则将dout10输出;如果m=1则将dout11输出;在subcycle21阶段,每个CLK周期内也同时读出一个RAM10和RAM11相同地址中的数据,分别为dout10和dout11,同时M序列模块输出一个m值,如果m=0,则将dout11输出;如果m=1则将dout10输出。
12.根据权利要求1所述的方法,其特征在于,在数据解密的实现过程,命名前后2个连续cycle2为cycle20和cycle21;
在cycle20阶段,RAM2输出一个6位密钥对M0进行初始化,然后M0暂时处于等待状态;同时,CLK作为时钟信号加到M1上,因此M1上每一个CLK周期输出一个m值,整个cycle20阶段M1输出126个m值,执行了2次m值循环;
在cycle21阶段,RAM2输出一个6位密钥对M1进行初始化,然后M1暂时处于等待状态;同时,CLK作为时钟信号加到M0上,因此M0上每一个CLK周期输出一个m值,整个cycle21阶段M0输出126个m值,执行了2次m值循环;
控制RAM2的时钟周期等于126个CLK周期,即一个cycle周期。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310280783.9A CN103346878B (zh) | 2013-07-05 | 2013-07-05 | 一种基于fpga高速串行io的保密通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310280783.9A CN103346878B (zh) | 2013-07-05 | 2013-07-05 | 一种基于fpga高速串行io的保密通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103346878A CN103346878A (zh) | 2013-10-09 |
CN103346878B true CN103346878B (zh) | 2016-04-27 |
Family
ID=49281654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310280783.9A Active CN103346878B (zh) | 2013-07-05 | 2013-07-05 | 一种基于fpga高速串行io的保密通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103346878B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104053151B (zh) * | 2014-06-19 | 2017-06-16 | 中国科学院半导体研究所 | 一种点到点的数据保密通信终端设备 |
CN105119715B (zh) * | 2015-07-03 | 2018-04-03 | 合肥工业大学 | 一种基于重加密算法的fpga虚拟io片间互连数字电路 |
CN105677254B (zh) * | 2016-01-06 | 2019-10-25 | 深圳市紫光同创电子有限公司 | 一种数据处理方法及装置 |
CN107425958A (zh) * | 2017-05-31 | 2017-12-01 | 中国科学院半导体研究所 | 保密通信装置及方法 |
CN108183898B (zh) * | 2017-12-28 | 2020-09-29 | 浙江中智海通信科技有限公司 | 一种基于注册服务的高效加密方法 |
CN113742753B (zh) * | 2021-09-15 | 2023-09-29 | 北京宏思电子技术有限责任公司 | 一种数据流加解密的方法、电子设备及芯片系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714917A (zh) * | 2009-08-24 | 2010-05-26 | 黑龙江大学 | 一种基于混沌密钥的数据加密传输卡 |
CN102055584A (zh) * | 2009-10-28 | 2011-05-11 | 中国科学院半导体研究所 | 一种光纤保密通信装置及其数据加密方法 |
CN102111263A (zh) * | 2011-02-21 | 2011-06-29 | 山东中孚信息产业股份有限公司 | 一种数据流加密的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090119503A1 (en) * | 2007-11-06 | 2009-05-07 | L3 Communications Corporation | Secure programmable hardware component |
-
2013
- 2013-07-05 CN CN201310280783.9A patent/CN103346878B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714917A (zh) * | 2009-08-24 | 2010-05-26 | 黑龙江大学 | 一种基于混沌密钥的数据加密传输卡 |
CN102055584A (zh) * | 2009-10-28 | 2011-05-11 | 中国科学院半导体研究所 | 一种光纤保密通信装置及其数据加密方法 |
CN102111263A (zh) * | 2011-02-21 | 2011-06-29 | 山东中孚信息产业股份有限公司 | 一种数据流加密的方法 |
Non-Patent Citations (1)
Title |
---|
"基于FPGA的高速加密芯片的设计与实现";杨卫国 等;《吉林大学学报(信息科学版)》;20051130;第23卷(第6期);第595-600页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103346878A (zh) | 2013-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103346878B (zh) | 一种基于fpga高速串行io的保密通信方法 | |
CN105490802B (zh) | 基于gpu的改进sm4并行加解密通信方法 | |
CN101969376B (zh) | 一种具有语义安全的自适应加密系统及方法 | |
CN102012993B (zh) | 一种数据选择加密解密方法及装置 | |
CN101588233B (zh) | 一种无线传感器网络节点应用中aes协处理器中的模块复用方法 | |
CN109656840A (zh) | 一种数据加解密的装置、方法、存储介质、以及数据存储系统 | |
CN103152362B (zh) | 基于云计算的大数据文件加密传输方法 | |
CN105119715B (zh) | 一种基于重加密算法的fpga虚拟io片间互连数字电路 | |
CN105357218A (zh) | 一种具备硬件加解密功能的路由器及其加解密方法 | |
CN208986966U (zh) | 一种加密终端以及相应的数据传输系统 | |
CN103632104A (zh) | 一种大数据环境下动态数据的并行加解密方法 | |
CN103413094A (zh) | 一种适用于航天器ctu的遥测加密系统 | |
CN105227298A (zh) | 基于改进型gcm的智能变电站报文安全传输实现方法 | |
CN108933653A (zh) | 一种基于大规模数据的aes加解密系统及方法 | |
CN108809642A (zh) | 一种基于fpga的多通道数据万兆加密认证高速传输实现方法 | |
CN101729242A (zh) | 对称分组密码的生成方法及其装置 | |
CN102752107B (zh) | 实现rc4加/解密的装置及其方法 | |
CN102739393A (zh) | 基于apb总线的硬件加密uart装置 | |
CN102664730A (zh) | 基于高级加密标准aes的128比特位密钥扩展方法 | |
CN103427981A (zh) | 一种实现加密、解密的方法以及装置 | |
CN101515853B (zh) | 信息终端及其信息安全装置 | |
CN103336920A (zh) | 用于无线传感网络soc芯片的安全系统 | |
CN103338447B (zh) | 一种应用于短距离传输的自存取加解密电路 | |
CN105187198B (zh) | 一种用于IPSec协议下的AES算法硬件实现装置 | |
CN103888937A (zh) | 一种适用于无线传感器网络aes加密的低开销快速轮加密装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |