一种医疗数据安全交互传输模块的制作方法

文档序号:20608352发布日期:2020-05-01 22:18阅读:244来源:国知局
一种医疗数据安全交互传输模块的制作方法

本发明涉及医疗设备通信技术领域,特别涉及一种医疗数据安全交互传输模块。



背景技术:

近几年大家对“数据安全”的关注度一直升温不降,各个行业为了保护自身数据安全采取各种防护手段,针对医疗行业的数据安全现状更是不容乐观。

现有医疗行业的数据管控制度有待完善,面对数据威胁医疗组织虽然也逐渐增强数据安全意识,但是关于数据管控尚未建立统一管理机制,数据管控制度的完善相对滞后,外部攻击风险,由于医疗数据有着得天独厚的价值,从而很容易引起大量黑客攻击行为,漏洞如果无法及时修复,自然会为外部攻击提供途径,因此需要采取有效措施应对外部攻击风险,数据交换风险,目前大量的医疗数据需要拿给第三方或者测试使用,为了规避真实数据泄露,需要建立科学的对外数据交换标准,提高数据安全要求,最主要的是需要强化病患敏感数据脱敏处理能力。

面对医疗行业的数据安全威胁和现状,凭借多年在医疗行业的积累,重点关注医疗信息批量泄密,给出了主动防御的应对思路,提出对数据接口传输交互进行加密的解决方案。



技术实现要素:

本发明的目的在于提供一种医疗数据安全交互传输模块,一款支持外部医疗数据到通用总线并具有加密功能的安全模块,可以实现8/32位并口数据和串口数据在外部网络环境中以服务器或客户机的方式进行认证加密传输。根据其功能应用需求,以硬件加软件的形式设计实现,在完成功能指标的前提下,力求完善可靠性、兼容性设计。

本发明的目的是通过下述技术方案予以实现:一种医疗数据安全交互传输模块,该医疗数据安全交互传输模块由硬件部分与软件部分构成,所述硬件部分由处理器、ram、rom、网络接口、并口、串口、安全认证加解密芯片、随机数生成芯片构成,共同组成系统的硬件支撑平台;所述处理器、ram、rom组成基本的系统和软件运行平台;

所述该医疗数据安全交互传输模块的软件部分由配置编译了ipv6的协议栈的linux操作系统及内含开发安全芯片、驱动模块、通用总线的驱动、传输模块、网络通信程序、安全认证加解密芯片、认证模块及控制程序模块等部分组成;

所述安全认证加解密芯片工作模式采用分组密码算法,采用ctr工作模式,便于随时将当前加密或解密状态切换至与对方同步的解密或加密状态;

所述网络接口由802.3ethernetmac和ethernetphy组成,具体包括网络芯片、网络变压器和rj-45接口插座等,形成网络模型中最低两层的数据链路层和物理层,网络模型中以上层次由操作系统及软件实现;

所述软件部分设置成tcp服务端或客户端两种工作方式,对连接的客户机或服务器进行双向认证,并协商会话密钥,随后的数据通信,将使用会话密钥加密通信;

进一步地,所述arm处理器接口选用5v电平,且选择网络芯片型号为10m/100m与之匹配。

进一步地,所述软件部分可以设置成tcp服务端或客户端工作方式,对连接的客户机或服务器进行双向认证,并协商会话密钥,随后的数据通信,将使用会话密钥加密通信。

进一步地,所述客户端设置的外部mcu接口包括8/32位并口方式和串口方式,所述外部mcu使用并口或者串口连接中的任意一种,通过驱动程序来访问控制医疗数据安全交互传输模块,实现并口-网络、串口-网络的认证加密通信。

进一步地,所述并口方式设置成tcp服务器,外部mcu从并口输入相应的参数传入fpga中的双端口ram,从地址5开始,一个地址可用三个字节,参数如下:

<port><password><overflowtime><hardware/sotfware>并回车;

参数说明;

netcs为命令;

<port>为侦听的端口号,范围为1025~65535;

<password>为用户私钥口令;

<overflowtime>为溢出时间,单位为秒,当客户机连接后,在溢出时间内未进行认证,或者认证后在溢出时间无数据传输,则退出当前连接,继续侦听等待其它用户连接;

<hardware/sotfware>选择硬件或软件加密,输入小写h或大写h为硬件加密,输入小写s或大写s为软件加密;

所述并口方式设置成tcp客户机,外部mcu从并口输入参数到fpga的双端口ram(从地址5开始,一个地址可用三个字节):cs<port><dstipv6><dstuserid><password><overflowtime><hardware/software>并回车,

参数说明:

<port>为侦听的端口号,范围为1025~65535;

<dstipv6>服务器ipv6地址;

<dstuserid>服务器用户id,范围为1~65535;

<password>为用户私钥口令;

<overflowtime>为溢出时间,单位为秒,当连接服务器后,未在溢出时间内未收到反向认证,或者认证后在溢出时间内无数据传输,则退出当前连接程序,让服务器继续侦听等待其它用户连接;

<hardware/sotfware>选择硬件或软件加密,输入小写h或大写h为硬件加密,输入小写s或大写s为软件加密;

服务器和客户机连接认证后,均会收到authenticationok的提示信息,随后双方即可直接通过串口收发数据进行通信。

进一步地,所述串口方式设置成tcp服务器,外部mcu从串口输入命令:cs

<port><password><overflowtime><hardware/sotfware>并回车

参数说明:

netcs为命令;

<port>为侦听的端口号,范围为1025~65535;

<password>为用户私钥口令;

<overflowtime>为溢出时间,单位为秒,当客户机连接后,在溢出时间内未进行认证,或者认证后在溢出时间无数据传输,则退出当前连接,继续侦听等待其它用户连接;

<hardware/sotfware>选择硬件或软件加密,输入小写h或大写h为硬件加密,输入小写s或大写s为软件加密;

所述并口方式设置成tcp客户机,外部mcu从串口输入命令:cs<port><dstipv6><dstuserid><password><overflowtime><hardware/software>并回车

参数说明:

cs为命令;

<port>为侦听的端口号,范围为1025~65535;

<dstipv6>服务器ipv6地址;

<dstuserid>服务器用户id,范围为1~65535;

<password>为用户私钥口令;

<overflowtime>为溢出时间,单位为秒,当连接服务器后,未在溢出时间内未收到反向认证,或者认证后在溢出时间内无数据传输,则退出当前连接程序,让服务器继续侦听等待其它用户连接;

<hardware/sotfware>选择硬件或软件加密,输入小写h或大写h为硬件加密,输入小写s或大写s为软件加密;

服务器和客户机连接认证后,均会收到authenticationok!的提示信息,随后双方即可直接通过串口收发数据进行通信。

与现有技术相比,本发明的有益效果是:该发明用户无需考虑网络的控制,只需要进行简单的配置即可进行认证和数据加密传输,具有高的安全性和可靠性。本发明提供两种接口:用户可配置的8/32位并口和串口。并口可以提供高的传输速率,适用于高速数据传输场合,串口连接配置简便快捷,适合用对数据时延要求不敏感的场合。

附图说明

图1是本发明整体示意图;

图2是本发明mcu通过8/32位并口连接示意图;

图3是本发明mcu通过串口与连接示意图;

图4是本发明并口方式设置流程图;

图5是本发明8/32位并口示意图;

图6是本发明并口测试示意图;

图7是本发明串口测试示意图;

图8是本发明产品构架示意图;

图9是本发明软件构架示意图;

图10是本发明认证通信构架示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1-7所示,一种医疗数据安全交互传输模块,该医疗数据安全交互传输模块由硬件部分与软件部分构成,所述硬件部分由处理器、ram、rom、网络接口、并口、串口、安全认证加解密芯片、随机数生成芯片构成,共同组成系统的硬件支撑平台;所述处理器、ram、rom组成基本的系统和软件运行平台;

处理器、ram、rom等组成基本的系统和软件运行平台;网络接口由802.3ethernetmac和ethernetphy组成,具体包括网络芯片、网络变压器和rj-45接口插座等,形成网络模型中最底两层的数据链路层和物理层,网络模型中以上层次由操作系统及软件实现。安全芯片用于加密通信数据,通过通用总线与处理器相连,随机数生成芯片用于产生真随机数,用于认证过程;mcu接口包括8/32位并口和串口,外部mcu可以使用并口或者串口,通过驱动程序来访问控制网络模块,实现并口-网络、串口-网络的认证加密通信。

所述该医疗数据安全交互传输模块的软件部分由配置编译了ipv6的协议栈的linux操作系统及内含开发安全芯片、驱动模块、通用总线的驱动、传输模块、网络通信程序、安全认证加解密芯片、认证模块及控制程序模块等部分组成;

所述安全认证加解密芯片工作模式采用分组密码算法,采用ctr工作模式,便于随时将当前加密或解密状态切换至与对方同步的解密或加密状态;

所述网络接口由802.3ethernetmac和ethernetphy组成,具体包括网络芯片、网络变压器和rj-45接口插座等,形成网络模型中最低两层的数据链路层和物理层,网络模型中以上层次由操作系统及软件实现;

所述软件部分设置成tcp服务端或客户端两种工作方式,对连接的客户机或服务器进行双向认证,并协商会话密钥,随后的数据通信,将使用会话密钥加密通信;

本实施例中,所述arm处理器接口选用5v电平,且选择网络芯片型号为10m/100m与之匹配。

本实施例中,所述软件部分可以设置成tcp服务端或客户端工作方式,对连接的客户机或服务器进行双向认证,并协商会话密钥,随后的数据通信,将使用会话密钥加密通信。

综上所述该发明的网络模块的各个组成部分均是电性连接。

网络模块可以设置成服务器或者客户机。设置成服务器的网络模块,处于等待连接状态。当有客户机向服务器连接后,则向服务器发送认证和协商会话密钥数据包。服务器收到正确字长的数据包,从本地flash中读取本机ecc私钥,先由用户从并口或串口输入的口令对本地ecc私钥解密,再用解密后的ecc私钥对数据包进行解密,该数据包结构为源id+目的id+会话key+mac_key+count+ecc签名。服务器检查目的id是否是本机id,检查count值是否落在本地flash存储的该源id的接收count值至count+2000范围内,若在范围内,则将该count值赋值给接收count并存储于flash中对应源id的cnt文件中,并根据源id查找客户机的ecc公钥,使用该公钥来验证对方签名。验证通过后,读取客户机发来的会话密钥信息赋值给对应变量,并生成已方的认证及协商会话密钥包,使用已方ecc私钥进行签名,并用客户机公钥加密后发客户机发送。客户机收到认证和协商会话密钥数据包后,先用用户口令解密后的,存储于本地flash中的本机ecc私钥对数据包进行解密,该数据包结构为源id+目的id+会话key+iv+count+ecc签名。客户机检查目的id是否是本机,检查源id是否是本机请求认证的源id,检查count值是否落在本地flash存储的该源id的接收count值至count+2000范围内,若在范围内则将该count值赋值给接收count并存储与flash中对应源id的cnt文件中,并检查收到的会话key是否与本机发出认证时指定的一致,根据源id读取对应的ecc公钥进行验证签名,验证通过后,双方使用协商的会话密钥,即scb2加密解密所需要的会话key、iv值,cmac消息认证码所需要的mac_key进行双向加密数据通信。认证后,收到对方的数据包,先进行mac验证,再进行scb2解密。双方在发送count值时,先读取本地flash中存储的目的id对应的id.cnt文件中的发送count值,将其加1后置入认证包并更新flash中存储的对应值。本地私钥名称均为eprivate.key,该私钥是经过ssx30-e加密芯片加密后的值,内含私钥和私钥对应的用户名,使用私钥前需要用户输入口令先对私钥进行解密。公钥文件为id.key,对应发送和接收计数文件为id.cnt。更换私钥过程为拷入新的eprivate.key覆盖原文件,并通知其它用户更新对应的公钥key和cnt计数文件。增加新用户,只需拷贝新用户的公钥key和cnt计数文件。删除用户,只需删除该用户对应的公钥key和cnt计数文件即可。

本实施例中,所述客户端设置的外部mcu接口包括8/32位并口方式和串口方式,所述外部mcu使用并口或者串口连接中的任意一种,通过驱动程序来访问控制医疗数据安全交互传输模块,实现并口-网络、串口-网络的认证加密通信。

本实施例中,所述并口方式设置成tcp服务器,外部mcu从并口输入相应的参数传入fpga中的双端口ram,从地址5开始,一个地址可用三个字节,参数如下:

<port><password><overflowtime><hardware/sotfware>并回车;

参数说明;

netcs为命令;

<port>为侦听的端口号,范围为1025~65535;

<password>为用户私钥口令;

<overflowtime>为溢出时间,单位为秒,当客户机连接后,在溢出时间内未进行认证,或者认证后在溢出时间无数据传输,则退出当前连接,继续侦听等待其它用户连接;

<hardware/sotfware>选择硬件或软件加密,输入小写h或大写h为硬件加密,输入小写s或大写s为软件加密;

所述并口方式设置成tcp客户机,外部mcu从并口输入参数到fpga的双端口ram(从地址5开始,一个地址可用三个字节):cs<port><dstipv6><dstuserid><password><overflowtime><hardware/software>并回车,

参数说明:

<port>为侦听的端口号,范围为1025~65535;

<dstipv6>服务器ipv6地址;

<dstuserid>服务器用户id,范围为1~65535;

<password>为用户私钥口令;

<overflowtime>为溢出时间,单位为秒,当连接服务器后,未在溢出时间内未收到反向认证,或者认证后在溢出时间内无数据传输,则退出当前连接程序,让服务器继续侦听等待其它用户连接;

<hardware/sotfware>选择硬件或软件加密,输入小写h或大写h为硬件加密,输入小写s或大写s为软件加密;

服务器和客户机连接认证后,均会收到authenticationok的提示信息,随后双方即可直接通过串口收发数据进行通信。

本实施例中,所述串口方式设置成tcp服务器,外部mcu从串口输入命令:

cs<port><password><overflowtime><hardware/sotfware>并回车

参数说明:

netcs为命令;

<port>为侦听的端口号,范围为1025~65535;

<password>为用户私钥口令;

<overflowtime>为溢出时间,单位为秒,当客户机连接后,在溢出时间内未进行认证,或者认证后在溢出时间无数据传输,则退出当前连接,继续侦听等待其它用户连接;

<hardware/sotfware>选择硬件或软件加密,输入小写h或大写h为硬件加密,输入小写s或大写s为软件加密;

所述并口方式设置成tcp客户机,外部mcu从串口输入命令:cs<port><dstipv6><dstuserid><password><overflowtime><hardware/software>并回车

参数说明:

cs为命令;

<port>为侦听的端口号,范围为1025~65535;

<dstipv6>服务器ipv6地址;

<dstuserid>服务器用户id,范围为1~65535;

<password>为用户私钥口令;

<overflowtime>为溢出时间,单位为秒,当连接服务器后,未在溢出时间内未收到反向认证,或者认证后在溢出时间内无数据传输,则退出当前连接程序,让服务器继续侦听等待其它用户连接;

<hardware/sotfware>选择硬件或软件加密,输入小写h或大写h为硬件加密,输入小写s或大写s为软件加密;

服务器和客户机连接认证后,均会收到authenticationok!的提示信息,随后双方即可直接通过串口收发数据进行通信。

所述该发明硬件部分的设计,在能完成设计要求功能和性能的前提下,综合考虑芯片的集成度、应用电路的成熟性及可获取性、性价比、技术支持(含对应驱动软件支持)情况、市场应用的普及情况、产品的可扩展性、安全性等多方面因素,力求硬件简洁、低功耗(降低对布pcb的复杂度,有效减少硬件部分的故障率、功耗、降低电磁辐射,对抵抗spa、dpa、ema攻击有一定作用,同时便于产品在原有基础上升级扩充),以加快研发进程,提高产品研发的成功率和上市速度。

所述为进一步提高产品抗干扰、抵抗边信道攻击的能力和降低电磁辐射,可以做屏蔽壳将电路板屏蔽。本申请人考虑到现在arm处理器多为3.3v供电,而与外界接口的并口设备主要有3.3v或5v的接口电平,选用的arm处理器接口应能耐受5v电平,提高产品的电平兼容性。选择10m/100m自适应网络芯片,使产品可以在100m或1000m网络环境下使用。提供串口传输方式,便于通过较为普及的串口接入(亦可转接成485/422等工业差分传输方式提高传输距离),适用于低速传输场合。8/32位并口提供高速传输应用,接口电平为ttl电平。

所述本发明软件部分,由于处理器需要使用较多的外围资源,一般多使用操作系统对资源进行调度与管理,考虑到现有linux操作系统已经支持网络协议栈且源代码开放,较为成熟,适于应用到本项目中。在linux环境下,开发安全芯片、通用总线的驱动、网络通信程序、认证加密部分。数据加密工作模式,考虑到双方实时交互通信的实际情况,分组密码算法采用ctr工作模式,便于随时将当前加密或解密状态切换至与对方同步的解密或加密状态,反之亦然。

所述程序可靠性设计上,考虑异常返回情况,并显示错误信息或作出相应处理。例如服务器程序,在加密通信过程中,在设定的时间内未发送亦接收不到数据,应退出当前通信,等待其它用户接入,防止由于网络中断等原因造成服务器拒绝提供对其它用户的服务。安全协议的设计,要考虑到现有攻击方式,制定合适的安全协议。密钥协商中,需要通信双方生成的密钥组成整个加密通信所需的密钥,防止攻击。

密钥协商中,需要通信双方生成的密钥组成整个加密通信所需的密钥,防止攻击。

安全协议与密钥协商的设计如下:

密码算法芯片采用国密局认证的ssx30-e芯片,该芯片提供scb2算法,按其说明手册测试,可以正常工作。ecc加密及解密算法、ecc签名及验证算法等使用了源码公开的密码库libtomcrypt,其版本为1.17,为了采用国密局公开的哈希算法sm3,我们实现了sm3算法并将之添加进libtomcrypt库以方便ecc加解密、签名及验证时直接调用。对应的快速数学库tomsfastmath,其版本为0.10。libtomcrypt和tomsfastmath为源码公开的库,其正确性可接受公开检验,实测结果也证明其可正确工作。

下面详细介绍ecc公私钥的生成与管理

密钥生成方法为,运行密钥生成函数,参数为用户口令和用户id,得到密钥流,然后分别导出公钥流和私钥流。由于公钥是可以公开的,所以无需对其进行加密,因此利用用户输入的id,我们可以直接把公钥流存储至相应的公钥文件id.key。

对于私钥流,在私钥流的末端,添加两个字节的id标识,为了在认证过程中能够方便地提取出本地id的值。

之后,需要先对私钥流进行加密,再存入私钥文件eprivate.key。这样是为了保证私钥在本地存储的安全。以下是对私钥流进行加密的过程。

首先利用参数用户口令做为哈希函数算法sm3的输入,由此可产生256bit的hash值,把hash值分块,分成两个128bit的hash1,hash2.这两个hash是用来做为加密芯片ssx30-e的密钥(加密芯片的密钥长度是128bit)来对私钥流进行加密的。

使用hash1做为ssx30-e的密钥对私钥流进行第一轮的加密,得到的加密结果再用hash2做为ssx30-e的密钥再进行一轮加密得到最终的加密结果,并把它存入私钥文件eprivate.key中(内含用户id)。

生成一组公私钥文件后,分发一次私钥,由于私钥文件名相同,故下一次生成的私钥会覆盖当前生成的私钥,这样能防止从密钥生成处恢复已经生成过的私钥文件,而公钥文件和通信计数文件由于id不同而不会覆盖。所有用户的密钥生成完后,可以再生成一组,用于覆盖最后一个用户的私钥文件,确保最后一个用户密钥的安全。

密钥分发:各用户分配对应各自id的私钥文件eprivate.key,和其它用户公钥文件id.key及通信计数文件id.cnt集合。

密钥使用:将私钥eprivate.key、公钥文件集合和通信计数文件集合放置于工作目录下,由通信软件在认证过程中,调用本机私钥、通信对方的公钥和对应的通信计数文件进行使用。私钥由经过加密芯片ssx30-e加密过的,使用时需要通过并口或串口即时输入用户口令处用上述密钥生成的逆过程进行解密。

密钥存储:私钥文件、公钥文件集合和通信计数文件集合存储于flash介质上的工作目录下。

密钥备份:私钥文件、公钥文件集合和通信计数文件集合可以通过拷贝的简捷方式备份至本地flash备份目录,或者通过ftp传送至u盘等其它存储介质进行备份。用户口令不存储在网络模块,需要用户记忆,或者写入需要连接并口或串口的设备中,在应用时通过并口或串口输入。

密钥更换,重新用密钥生成程序生成新的私钥文件eprivate.key、新的公钥文件id.key及新的通信计数文件id.cnt。用新的私钥文件更新本机私钥,其它用户更新该用户的公钥及通信计数文件。

密钥销毁,除了在密钥生成部分提到的方式,为了达到更高的安全性能,应对需要销毁的密钥文件按数据覆写标准要求,进行规定次数和规定数据图案的覆写,以达到防止数据恢复的目的。此外,考虑到硬盘存储介质的剩磁效应,潜在增加了被其它手段恢复的概率,而采用flash等半导体介质存储数据,由于没有剩磁效应,只要完全覆盖就能安全销毁数据。

设计的认证及会话密钥协商协议如下:

a->b:ebk(a||b||key||mac_key||count||signa

(hash(a||b||key||mac_key||count)))

其中a为源地址;b为目的地址;key为临时产生的会话密钥;mac_key为会话中做mac所用的密钥;count为a向b发送次数的计数值;signa(hash(a||b||key||mac_key||count))为使用a的私钥对上述信息的hash值进行签名;最后ebk为使用目的地址b的公钥对所有信息进行加密。

b->a:eak(b||a||key||iv||count||signb(hash

(b||a||key||iv||count)))

其中b为源地址;a为目的地址;key为收到a发往b的会话密钥;iv为b临时产生的会话初始向量;count为b向a发送次数的计数值;signb(hash(b||a||key||iv||count))为使用b的私钥对上述信息的hash值进行签名;最后eak为使用目的地址a的公钥对所有信息进行加密。

b收到a的认证信息包后,b用自己的私钥解密信息,若失败,则说明该信息被破坏或者是其它无效值;若正确,则检查目的地址是否是自己,若不是则说明可能是转移重放或反射重放的信息;若是自己则检查count值是否落在本地存储的与a通信的接收count值与count+2000之间,不正确则说明是伪造或者是重放的信息;正确则根据源地址查找其对应的公钥,若找不到则说明源地址错误或者自己的公钥库没有更新。找到公钥则用该公钥验证签名信息是否正确。不正确则说明该信息包被破坏或者是伪造的信息包。count值这样处理,是考虑当发方向收方认证时,可能网络问题而使收方未收到,收方的接收count值就不会自增,而发方发出后自增了count值,下次通信上时,造成发方的count值大于收方count值。若发方发送认证后,需要收到收方的反向认证再自增count值,若网络问题使得收方收到认证后,自增count值后,向发方反向认证的信息被阻断,造成发方未收到而未自增count值,这样收方count值又会大于发方count值。这样两方count值均由于网络问题可能大于对方值而无法判断是否合法。故设置对应收发双方均有两个count值,即一个发送count值和一个接收count值。发送方读取对应通信方的count值,发送含自增1的认证并存储自增1后的count值。收方收到后,与发方对应的接收count值比较。由于可能由于网络问题而收方未收到,故发方的发送count值总是大于等于收方的接收count值,设定大于的范围,比如小于2000范围作比较。若收方正常收到,比较该值在正确范围内后,即将接收count值更新为新收到的count值。这样,成功通信过的信息,若被敌方重放,由于count值会小于接收的count值,而被收方判断后拒绝与之通信。

a收到b的反向认证信息包后,操作类似于以上步骤,检查目的地址是否是本地地址,源地址是否是自己请求认证的源地址。同时,a需要比对收到的会话密钥key是否与自己发出的会话密钥key一致。若不一致则说明b没有能正确解密a发出的认证信息,却发回认证包企图与a通信,可能是欺骗通信。若一致,说明b可以正确解密a发出的信息,则继续验证其签名是否正确。

a、b双向认证后,协商出由a临时生成的会话密钥key、消息认证码密钥mac_key以及由b临时生成的会话初始向量iv。后面则可以使用对称密码进行会话通信。

a->b:ekey(m)||cmacmac_key(ekey(m))

收到信息后,先验证mac是否正确,不正确则说明数据被破坏或者是伪造的。正确则正常进行解密。

分组密码的工作模式中,由于ctr模式没有短循环,提供与分组密码在选择明文攻击下相等的安全级别,无需解密程序,允许随机访问明文,适用于随时需要中断和恢复加密解密过程的双向交互通信,输入的明文无需与分组长度相等的优点,所以选用ctr模式。

以上步骤完成a、b身份的双向认证及协商会话密钥。

认证包中指定通信源和目的地址,防止转移重放、反射重放。

认证中两个方向的消息不对称,可以防止反射重放。

ecc签名及加密时,都有随机数加在里面,使得即使处理相同消息内容的签名和加密,结果都不会相同。

指定通信源和目的地址,通信中限定单会话线程,防止并行会话攻击。

预置通信对方的公钥,消息中加入主体身份信息,防止绑定攻击。

记录通信计数,count单调递增,每次count与记录比较,防止重放攻击。对应用户的发送count及接收count均存储于对应的id.cnt文件中。

对摘要签名,可以分辨信息来源的签名及是否被篡改,提供认证,非否认性和保证数据完整性。

用对方的公钥加密,提供机密性,无私钥者无法获知通信内容。

已方私钥及对方公钥集合以文件形式存储,便于更换密钥而无需重新编译程序。公钥以明文形式存储,文件名为id.key,id为用户识别号,私钥以密文形式存储,私钥文件包含私钥对应的用户id,用户私钥名均为eprivate.key。在应用时,读取加密后的私钥,通过并行接口或串口输入口令解密后再使用,以防止敌方通过网络入侵或直接进入系统后将私钥拷贝盗用。这种对私钥加密后,即使对方盗走这个私钥文件,由于没有加密芯片,就无法破译得到私钥。即使拥有也得先破译加密苾片ssx30-e。而执行程序中并没有其口令,是在运行过程中由并口或串口从外部临时输入,故盗走执行程序亦无法直接使用该私钥。由于pkcs#1v2.1有特殊的tag参数,即使相同的密钥,盗用密钥后采用tag不同或其它版本的ecc系统亦不能正确解密。

一次认证通信过程中没有完整的会话密钥,即使要进行攻击和破译,也需要先得到两方的私钥得到完整的会话密钥信息后,再进行计算,提高了攻击成本。若直接对会话数据解密,则需得到会话key、iv。若需要伪造会话数据,还需要得到mac_key伪造消息认证码。

接下来进行的就是用key传输大量数据的会话,若对数据加入mac,可以防止攻击方用其它数据进行欺骗或篡改通信数据,加入类似count可以防止重放,但不能提供身份识别,要识别的话,加签名就会影响速度,尤其是对实时性要求比较高的应用对时间延迟会很敏感。

ssx30-e芯片的scb2算法只提供ecb、cbc和ofb三种模式,ecb由于对相同明文得到相同密文,一般不能直接应用,后两种需要连续工作,不可间断,否则就得重头再来,在数据经常交互通信时加密解密有点问题。本项目中基于ssx30-e芯片ecb这个基本模式,用软件在外面模拟出ctr工作模式。

程序中从通信角度考虑了通信的健壮性,在客户机连接上服务器后,需要进行的是双向认证。当等待认证时间超过了溢出时间,将会中止当前连接,服务器进入侦听连接状态,使得其它客户机可以连接服务器。客户机连接认证后,与服务器进行数据通信,数据通信结束后,在溢出时间内无数据接收或发送,客户机关闭连接,同时通知服务器关闭连接。同样,若服务器在此情况下先到达溢出时间,服务器关闭连接,同进通知客户机关闭连接。或者在连接过程中,当网络出现故障而阻断时,数据通信中的客户机和服务器双方均会由于在各自设置的溢出时间内无数据传送而自动关闭连接,这样服务器可以继续进入侦听连接为其它客户机提供服务,而不会被此类故障拖住而无法为其它客户机提供服务。

操作系统采用了源码开放的linux,其版本为2.3.16。为提高产品抗干扰、抵抗边信道攻击的能力和降低电磁辐射,采用的物理防护措施为使用金属屏蔽壳对模块进行屏蔽。

所述串口使用了标准rs-232串口中的rx、tx和gnd进行三线制通信。所述并口的设置过程均是以32位模式进行。

串口应用举例:

一端输入命令cs30001234567820s回车,设置成服务器模式并进入侦听状态。另一端输入cs30002001::1:20c:29ff:fe5f:116c167058765432115s回车,设置成客户机模式并向服务器发出认证请求,服务器验证并向客户机发出反向认证请求,客户机验证后双方即可在协商的会话密钥加密下进行双向数据通信。当客户机数据发送完毕,且无需接收服务器数据时,延时15秒后,客户机关闭连接。服务器收到关闭连接后,重新进入侦听连接的状态,等待下一个客户机继续请求认证和通信。或者在客户机连接后的传输过程中,由于网络原因,未收到客户机的关闭请求,或者由于网络阻断而收不到数据,服务器延时20秒后退出当前连接,重新进入到侦听连接的状态,等待下一个客户机继续请求认证和通信。

发送和接收串口数据要求:用户数据中的0x00~0x1f、0x7f不能直接发送,需要进行一个转换,例如统一加上0x20,转换为0x20~0x3f、0x9f并加前缀0xff发送,若数据为0xff,则重复发一次。收到数据后,若某一字节是0xff,则检查其后字节,若也是0xff,将这两个0xff合并为一个0xff。若是0x20~0x3f、0x9f范围,则去掉前缀取其后字节减去0x20的值。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

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