一种基于双CPU加MAC的单向数据传输系统及其方法与流程

文档序号:11951694阅读:373来源:国知局
一种基于双CPU加MAC的单向数据传输系统及其方法与流程

本发明涉及单向数据传输和对称加解密密码算法的消息认证等领域,尤其涉及一种基于双CPU加MAC的单向数据传输系统及其方法。



背景技术:

秘密信息在整个信息运转中存在着越来越大的泄密风险,单向数据传输技术应需产生且不断地发展起来。单向数据传输技术一般会利用单向的光电转换模块或数字隔离模块等设备保证物理构成上的单向性。单向数据传输设备一般会采用RS232,USB网络等接口,主要根据应用需要进行确定。

在单向传输设备研究初期经常使用网闸,但经研究发现,网闸不能防止泄密。之后出现的数据二极管,在物理构造上保证了传输的单向性,但不对输出数据进行验证,所以对非法程序向外导出数据的操作不敏感。



技术实现要素:

本发明提供了一种基于双CPU加MAC的单向数据传输系统及其方法,本发明在不影响文件导出和传输速度的情况下,防止操作系统中隐藏的恶意程序将不该导出的数据隐藏导出,或是不该进入的数据通过网络流入,详见下文描述:

一种基于双CPU加MAC的单向数据传输系统,所述双CPU加MAC的单向数据传输系统包括:上位机模块、USB KEY、以及单向数据传输模块,所述上位机模块对数据进行分包,发送给所述USB KEY生成MAC,然后将数据和MAC按照系统协议打包,传输至所述单向数据传输模块;

所述单向数据传输模块对数据进行MAC计算,将返回MAC值和所述上位机模块传输的MAC值进行比较,如果相同,将数据传输至所述上位机模块;

所述单向数据传输模块包括:内网输入CPU子模块和外网输出CPU子模块。

其中,所述上位机模块包括:

专用服务软件子模块,用于提供有可视化界面的软件系统,实现身份验证、系统协议组织与MAC生成,以及网络通信;

管理软件子模块,用于初始化USB KEY,建立并管理用户及身份信息;

客户端软件子模块,安装于客户机的类FTP客户端软件,负责与单向数据传输模块建立链接,并接收数据,还原成文件。

进一步地,所述单向数据传输模块还包括:密码子模块、数据隔离子模块、以及FPGA子模块,

所述内网输入CPU子模块,是以ARM为中心,提供千兆网络协议栈接口,负责对服务软件发来的网络数据进行解析,提取符合本系统协议的数据包,然后组包发送给FPGA子模块;

所述外网输出CPU子模块,是以ARM为中心,提供千兆网络协议栈接口,负责验证客户机软件的合法性,接收FPGA子模块处理过的有效数据,中转数据,通过与客户机软件的链接端口发送出去;

所述数据隔离子模块,在FPGA子模块和外网输出CPU子模块的双口SRAM之间的数据总线,使用高速8通道单向传输的数字隔离芯片进行物理隔离,保证外网的数据不会进入;

密码子模块又包括:随机数生成单元、以及加解密单元,

随机数生成单元,由噪声源芯片和产生的随机数的逻辑模块组成,负责生成并采集真随机数,作为会话密钥和协议标示符;

加解密单元,由密码芯片组成,负责对数据进行加解密处理;

FPGA子模块调用加解密单元对将要发送的数据进行加密处理,生成MAC。

一种基于双CPU加MAC的单向数据传输系统的实现方法,所述实现方法包括以下步骤:

专用服务软件子模块对数据进行分包,发送给USB KEY生成MAC,然后将数据和MAC按照系统协议打包,传输至内网输入CPU子模块;

内网输入CPU子模块将合格数据组包发送给FPGA子模块;

FPGA子模块从fifo中将数据读出,从双口RAM对应位置将密钥读出,然后将密钥和数据一并送入密码子模块;

密码子模块返回MAC值至FPGA子模块;

FPGA子模块将返回MAC值和专用服务软件子模块传输的MAC值进行比较,如果相同,将数据传到外网输出CPU子模块;

外网输出CPU子模块启动读取双口SRAM,并将数据通过网络传输给客户端软件子模块。

进一步地,所述实现方法还包括以下步骤:

FPGA子模块采集随机数存储到内部的双口RAM中,并通知内网输入CPU子模块将随机数按顺序发送给专用服务软件子模块;

专用服务软件子模块将随机数分组,存储到数据库的临时密钥表中;内网输入CPU子模块传输完成后,初始化过程结束。

进一步地,所述实现方法还包括以下步骤:

专用服务软件子模块将用户从登陆界面敲入的口令传输至USB KEY进行身份验证,接收验证结果,匹配激活;

专用服务软件子模块从单向数据传输模块提取会话密钥之后进入工作模式;

客户端软件子模块将用户从登陆界面输入的口令传到USB KEY进行身份验证,接收验证结果,匹配激活,进入运行等待接收界面。

其中,当返回MAC值和专用服务软件子模块传输的MAC值不一致时,FPGA子模块发送错误指示信号至内网输入CPU子模块,内网输入CPU子模块接收到错误指示信号后生成数据错误协议发送给专用服务软件子模块;

专用服务软件子模块判断是否是其数据,如果是,则进行重传,否则丢弃;

专用服务软件子模块收到“需要重传”报文后,启动重传流程,重传文件。

本发明提供的技术方案的有益效果是:本发明利用内网输入CPU模块和外网输出CPU模块分别与外部主机建立链接的方式,使得建立对外链接时,可以不受单向传输的影响;同时结合数字加解密技术,对所有导出数据经过两次MAC加密,两次MAC值比对合格才能输出数据,不但确保数据的完整性和正确性,而且只有用户真正想发送的数据才能发出去,在不影响传输速度的情况下,真正杜绝了操作系统中隐藏的恶意程序,将不应该导出的数据导出情况的发生;利用数字隔离芯片的单向传输特性,在物理属性上确保不流入一比特,真正防止了外部的恶意攻击。

附图说明

图1为本发明提供的一种基于双CPU加MAC单向数据传输系统系统的结构图;

图2为本发明提供的一种基于双CPU加MAC单向数据传输系统的上位机模块的组成图;

图3为本发明提供的一种基于双CPU加MAC的单向数据传输系统的实现方法流程图;

图4为本发明提供的初始化过程流程图;

图5为本发明提供的初始化过程框图;

图6为本发明提供的专用服务软件子模块接入USB KEY实现过程的流程图;

图7为本发明提供的客户端软件子模块接入USB KEY实现过程的流程图;

图8为本发明提供的专用服务软件子模块将数据传输至内网输入CPU子模块的流程图;

图9为本发明提供的第二次MAC加密、以及MAC值对比的过程示意图;

图10为本发明提供的用户使用操作的流程图。

附图中,各标号所代表的部件列表如下:

1:上位机模块; 2:USB KEY;

3:单向数据传输模; 11:专用服务软件子模块;

12:管理软件子模块; 13:客户端软件子模块;

31:内网输入CPU子模块; 32:外网输出CPU子模块;

33:密码子模块; 34:数据隔离子模块;

35:FPGA子模块; 331:随机数生成单元;

332:加解密单元。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面对本发明实施方式作进一步地详细描述。

消息认证是对要发送的数据本身产生一个冗余的信息MAC(消息验证码),消息认证码是利用密钥对要认证的数据加密产生的数据块。MAC对要保护的信息是唯一的和一一对应的,因此MAC可以有效的保护数据的完整性,以及发送数据的不可抵赖和不可伪造性。消息认证技术可以防止数据的伪造和被篡改,以及证实消息来源的有效性,已广泛应用于信息网络。

实现消息认证码可以有多种途径,如:校验码法,散列法,加解密法等。本发明实施例根据实际应用需要选择对称加解密的MAC算法。

实施例1

本发明实施例公开了一种基于双CPU加MAC的单向数据传输系统,参见图1,该基于MAC的单向数据传输系统由三部分组成:上位机模块1、USB KEY 2、以及单向数据传输模块3。

上位机模块1对数据进行分包,发送给USB KEY2生成MAC,然后将数据和MAC按照系统协议打包,传输至单向数据传输模块3;单向数据传输模块3对数据进行MAC计算,将返回MAC值和上位机模块1传输的MAC值进行比较,如果相同,将数据传输至上位机模块1。

参见图2,上位机模块1包括:专用服务软件子模块11、管理软件子模块12和客户端软件子模块13。

其中,专用服务软件子模块11,用于提供有可视化界面的软件系统(供用户使用),实现身份验证、系统协议组织与MAC生成,以及网络通信等功能。

具体实现时,专用服务软件子模块11首先要对用户进行身份验证,识别插入计算机的USB KEY 2和用户输入的口令的正确性,登陆后用户选择要导出的文件点击导出按钮即可。

管理软件子模块12,用于初始化USB KEY 2,建立并管理用户及身份信息等。

客户端软件子模块13,是安装于客户机的类FTP(文件传输协议)客户端软件,负责与单向数据传输模块3建立链接,并接收数据,还原成文件。

USB KEY 2,用于内部保存启动服务的指令字,包括标准加解密算法用于生成MAC。

其中,USB KEY 2分为服务器端KEY和客户端KEY两种,服务器端KEY由管理人员使用,客户端KEY由用户使用。

单向数据传输模块3包括:内网输入CPU子模块31、外网输出CPU子模块32、密码子模块33、数据隔离子模块34、以及FPGA子模块35。

内网输入CPU子模块31,是以ARM为中心,提供千兆网络协议栈接口,负责对服务软件发来的网络数据进行解析,提取符合本系统协议的数据包,然后组包发送给FPGA子模块35。

外网输出CPU子模块32,是以ARM为中心,提供千兆网络协议栈接口,负责验证客户机软件的合法性,接收FPGA子模块35处理过的有效数据,中转数据,通过与客户机软件的链接端口发送出去。

数据隔离子模块34,在FPGA子模块35和外网输出CPU子模块32的双口SRAM之间的数据总线使用高速8通道单向传输的数字隔离芯片进行物理隔离,保证外网的数据不会进入系统。

密码子模块33又包括:随机数生成单元331、以及加解密单元332。

随机数生成单元331,由噪声源芯片和产生的随机数的逻辑模块组成,负责生成并采集真随机数,作为会话密钥和协议标示符;

加解密单元332,由密码芯片组成,负责对数据进行加解密处理。

FPGA子模块35调用加解密单元332对将要发送的数据进行加密处理,生成MAC。

本发明实施例采用服务器推送机制实现文件的导出。

具体实现时,在使用单向数据传输系统时需要同时满足如下条件:

1、专用服务软件子模块11所在电脑需要通过网口连接到单向数据传输模块3;

2、用户需要插入主机端USB KEY 2到导出电脑;

3、用户需要插入客户端USB KEY 2到导入电脑;

4、客户端软件子模块13与单向数据传输模块3建立连接;

上述条件均满足之后,用户就可以通过专用服务软件子模块11导出文件。

导出结束,专用服务软件子模块11会生成文件导出记录,用户可以清楚地了解当前进行的每一次导出操作所产生的导出数据的量,包括:文件名,文件大小,导出时间,操作人员信息等。

具体实现时,本发明实施例对上述各个器件、模块、子模块以及单元的执行主体不做限制,可以为单片机、微控制器等,也可以为其他能实现上述功能的器件或部件。

综上所述,该基于MAC的单向数据传输系统利用数字加解密技术,对所有导出的数据经过两次MAC加密,两次MAC值比对合格才能输出数据,不但确保了数据的完整性和正确性,而且确保了只有用户想发送的数据才能发出去,在不影响传输速度的情况下,杜绝了操作系统中隐藏的恶意程序,将不应该导出的数据导出情况的发生;利用数据隔离子模块34的单向传输特性,在物理属性上确保了不流入一比特,真正防止了外部的恶意攻击。

实施例2

本发明实施例公开一种基于双CPU加MAC的单向数据传输系统的实现方法,参见图3,该实现方法包括以下步骤:

101:FPGA子模块35采集随机数存储到内部的双口RAM中,并通知内网输入CPU子模块31将随机数按顺序发送给专用服务软件子模块11;

102:专用服务软件子模块11将随机数分组,存储到数据库的临时密钥表中;内网输入CPU子模块31传输完成后,初始化过程结束;

103:专用服务软件子模块11将用户从登陆界面敲入的口令传输至USB KEY 2进行身份验证,接收验证结果,匹配激活;

104:专用服务软件子模块11从单向数据传输模块提取会话密钥之后进入工作模式;

105:客户端软件子模块13将用户从登陆界面输入的口令传到USB KEY 2进行身份验证,接收验证结果,匹配激活,进入运行等待接收界面;

106:专用服务软件子模块11对数据进行分包,发送给USB KEY2生成MAC,然后将数据和MAC按照系统协议打包,传输至内网输入CPU子模块31;

其中,专用服务软件子模块11在传输数据之前会按照数据库中密钥的存储顺序,为每次识别到的USB KEY2分配密钥,并通知内网输入CPU子模块31有新的USB KEY 2被识别。

107:内网输入CPU子模块31将合格数据组包发送给FPGA子模块35;

具体实现时,内网输入CPU子模块31对数据的包头进行解析,将不符合系统协议的数据丢弃,合格的数据通过本地总线发送给FPGA子模块35。

108:FPGA子模块35从fifo中将数据读出,从双口RAM对应位置将密钥读出,然后将密钥和数据一并送入密码子模块33;

109:密码子模块33返回MAC值至FPGA子模块35;

110:FPGA子模块35将返回MAC值和专用服务软件子模块11传输的MAC值进行比较,如果相同,将数据传到外网输出CPU子模块32;

其中,当返回MAC值和专用服务软件子模块11传输的MAC值不一致时,FPGA子模块35发送错误指示信号至内网输入CPU子模块31,内网输入CPU子模块31接收到错误指示信号后生成数据错误协议发送给专用服务软件子模块11,专用服务软件子模块11判断是否是其数据,如果是,则进行重传,否则丢弃。专用服务软件子模块11收到“需要重传”报文后,启动重传流程,重传文件。

111:外网输出CPU子模块32启动读取双口SRAM,并将数据通过网络传输给客户端软件子模块13。

具体实现时,可以根据实际应用中的需要对上述步骤的操作流程进行适应的调整,本发明实施例对此不做限制。

综上所述,本发明实施例通过上述步骤101-步骤111,实现了基于MAC的单向数据传输系统的运行操作,提高了系统的运行性能,节省了操作时间,满足了实际应用中的多种需要。

实施例3

下面结合图4和图5对实施例2中的基于MAC的单向数据传输系统的初始化过程(即实施例2中步骤101和步骤102中的内容)进行详细的描述,详见下文描述:

201:单向数据传输模块3上电,插入USB KEY 2;

202:每次插入USB KEY 2(无论是否同一张卡),系统进入密钥生成状态,FPGA子模块35调用随机数生成单元331采集1024字节的随机数并存储至内部的双口RAM中;

203:FPGA子模块35通知内网输入CPU子模块31读取随机数;

204:内网输入CPU子模块31将读取到的随机数按顺序发送给上位机的专用服务软件子模块11;

205:专用服务软件子模块11将收到的随机数分组,并存储到数据库的临时密钥表中;

其中,本发明实施例是以1024字节的随机数为例进行说明,可以将1024字节的随机数按照16字节分成64组,具体实现时,本发明实施例对此不做限制。

206:内网输入CPU子模块31传输完成后,系统将进入数据通信状态(即正常工作状态);

207:FPGA子模块35内部的双口RAM的使能关闭,内网输入CPU子模块31不能读写双口RAM;

208:FPGA子模块35只能读不能写双口RAM;

209:初始化过程结束。

具体实现时,可以根据实际应用中的需要对上述步骤的操作流程进行适应的调整,本发明实施例对此不做限制。

综上所述,本发明实施例通过上述步骤201-步骤209,实现了对基于MAC的单向数据传输系统进行初始化的操作,提高了系统的运行性能,节省了操作时间,满足了实际应用中的多种需要。

实施例4

下面结合图6对专用服务软件子模块11接入USB KEY 2的步骤进行详细的介绍(即实施例2中的步骤103和步骤104中的内容),详见下文描述:

301:内网输入CPU子模块31等待专用服务软件子模块11的连接,外网输出CPU子模块32侦听网络客户端的接入,与客户端软件子模块13建立链接;

302:插入主机端USB KEY2到导出电脑;

303:专用服务软件子模块11的接口监视进程发现USB KEY2,主动弹出用户登录界面,将用户从登陆界面输入的口令传输至USB KEY2进行身份验证;验证通过后,匹配激活,专用服务软件子模块11进入运行界面;

304:专用服务软件子模块11从单向数据传输模块3提取64组会话密钥,进入正常工作模式。

具体实现时,可以根据实际应用中的需要对上述步骤的操作流程进行适应的调整,本发明实施例对此不做限制。

综上所述,本发明实施例通过上述步骤301-步骤304,实现了专用服务软件子模块11接入USB KEY 2的操作,提高了系统的安全性,满足了实际应用中的多种需要。

实施例5

下面结合图7对客户端软件子模块13接入USB KEY 2的步骤进行详细的介绍(即实施例2中的步骤105),详见下文描述:

401:插入客户端USB KEY 2到导入电脑;

402:客户端软件子模块13的接口监视进程发现USB KEY 2,主动弹出用户登录界面,将用户从登陆界面输入的口令传到USB KEY 2进行身份验证;

403:验证通过后,匹配激活,客户端软件子模块13进入运行等待接收界面。

具体实现时,可以根据实际应用中的需要对上述步骤的操作流程进行适应的调整,本发明实施例对此不做限制。

综上所述,本发明实施例通过上述步骤401-步骤403,实现了客户端软件子模块13接入USB KEY 2的操作,提高了系统的安全性,满足了实际应用中的多种需要。

实施例6

下面结合图8对专用服务软件子模块11将数据传输至内网输入CPU子模块31的流程(第一次MAC加密)进行详细的介绍(即实施例2中的步骤106),详见下文描述:

501:在专用服务软件子模块11上选择需要导出的文件;

502:专用服务软件子模块11将需要导出的文件进行分包将每包数据发送给USB KEY2生成MAC,其中密钥按照数据库中密钥的存储顺序选择,随数据一起传到USB KEY2;

其中,每包数据最大为4KB,内容包括:文件的数据、每包数据的长度,文件总大小等。具体实现时,根据实际应用中的需要进行设定,本发明实施例对此不做限制。通过该步骤实现了对第一次MAC的加密。

503:专用服务软件子模块11将每包数据和MAC按照系统协议打包;

504:专用服务软件子模块11将打包后数据传送给内网输出子模块31。

具体实现时,可以根据实际应用中的需要对上述步骤的操作流程进行适应的调整,本发明实施例对此不做限制。

综上所述,本发明实施例通过上述步骤501-步骤504,实现了专用服务软件子模块11将数据传输至内网输入CPU子模块31的操作(第一次MAC加密),提高了系统的运行性能,节省了操作时间,满足了实际应用中的多种需要。

实施例7

下面结合图9对实施例2中的第二次MAC加密、以及MAC值对比的过程进行详细的介绍(即实施例2中的步骤107至步骤110),详见下文描述:

601:内网输入CPU子模块31接收数据,解析数据包头,根据数据包头判断数据是否合格,如果合格,则将组包通过本地总线发送至FPGA子模块35,否则丢弃数据;

602:FPGA子模块35从fifo中将数据读出,从双口RAM对应位置读出密钥,将数据和密钥一并送入加解密单元332;

603:加解密单元332运算后,返回MAC值至FPGA子模块35;

604:FPGA子模块35将返回MAC值与内网输出子模块31的传输MAC值进行比较,如果返回MAC值与传输MAC值相同,则符合数据一致性和正确性验证,将数据传输至外网输入子模块33,进入步骤606,否则内网输出子模块31通知专用服务软件子模块11进行数据的重传,执行步骤605;

通过上述步骤603和步骤604实现了第二次MAC加密、以及MAC值的对比。

605:专用服务软件子模块11启动重传流程;

606:外网输出CPU子模块33检测FPGA子模块35是否有数据传输过来,如果是,则启动读取双口SRAM接收数据,否则继续等待;

607:外网输出CPU子模块33将接收到的数据通过网络传输给客户端软件子模块13,继续执行步骤606,直至文件传输完毕;

608:用户通过客户端软件子模块13查看文件导出完成后,在主机端通过专用服务软件子模块11的应用界面退出登陆状态,拔走USB KEY 2,客户端软件子模块13退出链接。

其中,在系统部署时,管理软件子模块12对USB KEY 2进行初始化设置,建立与USB KEY 2对应的用户ID及相应的身份,口令等信息。

外网输出CPU子模块33在上电之后首先会侦听网络客户端的接入,与客户端软件子模块13建立链接后,开始监测FPGA是否有数据传输过来。一旦发现有数据发送过来,外网输出CPU子模块33将启动读取双口SRAM,并将数据通过网络传输给客户端软件子模块13,如此往复,直至把用户选中的文件传输完毕。

具体实现时,可以根据实际应用中的需要对上述步骤的操作流程进行适应的调整,本发明实施例对此不做限制。

综上所述,本发明实施例通过上述步骤601-步骤608,实现了第二次MAC加密、以及MAC值对比的操作,提高了系统的安全性,满足了实际应用中的多种需要。

实施例8

下面结合图10对用户使用操作流程介绍如下,详见下文描述:

701:首先将USB KEY 2插到主机上,专用服务软件子模块11的接口监视进程发现USB KEY 2后,主动弹出用户登录界面,等待用户输入口令;

702:口令验证通过后,进入专用服务软件子模块11的运行界面;

703:客户端软件子模块13已经处于连接状态,用户可以选择文件进行导出;

704:导出结束,用户可以看到本次的操作日志。

其中,日志内容包括:用户ID、导出文件名、导出文件大小以及操作时间。每次可以选择多个文件导出,也可以分多次导出文件。

进一步地,操作结束后,主机端通过专用服务软件子模块11退出登陆状态,拔走USB KEY 2,客户端软件子模块13退出链接。

具体实现时,可以根据实际应用中的需要对上述步骤的操作流程进行适应的调整,本发明实施例对此不做限制。

本发明实施例对各器件的型号除做特殊说明的以外,其他器件的型号不做限制,只要能完成上述功能的器件均可。

本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1