引言
通过Internet通信的局域网之间的数据报文往往都是非常机密的,需要对传输的数据进行加解密来保证其安全性。目前常用的数据传输方案有软件加密和硬件加密两大类。
软件加密是指用户在发送信息之前,先用加密软件对其进行加密后发送,加密信息到达接收方后采用相应的解密软件对其进行解密还原; 其具有实现方便、兼容性好等优点,但存在密钥管理难、容易被攻击、程序跟踪破解等缺点。硬件加密是采用专用加密芯片或独立处理芯片等硬件设备在链路层对数据进行加解密; 其具有保密性强、加解密速度快等优点,但存在操作复杂的缺点。
本文基于软件和硬件加密技术的优缺点,提出软硬件加密技术结合的数据加密传输方案: 采用基于OpenSSL认证中心对局域网网关服务器进行身份认证,用DH (Diffie-Hellman)协商算法分配初始密钥,在网关安装SSX31B 加密卡,用3DES对称加密算法对出入网关的IP数据包进行加解密处理,该方案具有较高安全性和传输效率。
1 加密卡设计
1.1 数据截获
SSX31 B加密卡是指用SSX31B 网络安全芯片开发的硬件加密卡,插入到网关服务器的PCI插槽,对出入网关的IP数据包进过滤截获、加解密及转发处理。SSX31B加密卡利用Netf ilter机制在Linux内核的IP 协议层对IP 包进行截获,N etfilter 是L inux内核中用于扩展各种网络服务的结构化底层框架。N etf ilter 机制为IPv4 定义了5 个钩子( hook):
(1) NF _IP _PRE _ROUTING 刚刚进行完版本号、校验等检测后进入链路层的IP数据包,需要通过该hook检测点,源地址的转换就在此点进行;
(2) NF_IP_LOCAL_IN 经过路由查找后,送往本机的IP数据包需通过此hook检测点;
(3) NF_IP_FORWARD 将要转发的IP数据包需通过此hook检测点;
(4) NF_IP_POST _ROUT ING 所有即将通过网络设备出去的IP数据包需通过此hook检测点;
(5) NF_ IP_LOCAL _OUT 本机进程发出的IP数据包将首先通过此hook检测点。
这些hook几乎覆盖了协议栈中IP数据包传输的整个过程。在每个hook里,协议将使用数据包和hook号来调用Netfilter框架。部分内核注册后可以为每一个协议监听不同的钩子,所以当IP数据包通过Netfilter框架时,如果有模块为协议和hook注册,则按顺序对IP数据包进行检验、更改、抛弃等处理,或者请求Netfilter将其入队,入队的IP数据包可以被收集送往用户空间,这些IP数据包是以异步的方式来进行处理的。
图1显示了IP 数据包穿越Netfilter的机制,以及IP数据包的各个hook检测点的位置。
SSX31 B加密卡通过NF_IP_PRE _ROUT ING 和NF_IP_POST_ROUTING 这两个hook 检测点,在Linux内核层实现对IP数据包的截获,下面是实现IP数据包截获的主要代码。
图1 Ne tfilter机制示意图
进入IP协议栈的所有IP数据包:
1.2 数据加解密
3DES算法加密强度高,且容易用硬件来实现,SSX31 B加密卡集成了3DES算法,对截获的IP数据包进行加解密处理。前面的hook _incoming()和hook_outgoing()是截获IP数据包后的处理函数,它们对所截获的IP数据包进行匹配规则比较,对于符合匹配条件的IP数据包分别进行加解密处理:
(1)在发送方向上(NF_IP_POST_ROUTING),对源IP匹配于己方内网(来自己方内网),且目的IP匹配于对方内网(发往对方内网)的IP数据包进行加密处理,并在加密后的IP数据包包头的TOS域进行标记;
(2)在接收方向上(NF_IP_PRE_ROUTING),除上述基于地址IP的匹配外,还对TOS域有加密标志的IP数据包进行解密处理。
主动加密机对符合匹配条件的IP数据包进行加密处理并转发。被动加密机对接收到的加密IP数据包进行解密处理并转发,完成一次IP数据包通过加密通道的传输过程。由于3DES加密的数据单元为8字节,为防止加密后IP报文总长度超过理论限定值216-1,所以本方案只对报文前面(int)(L/8)*8个字节进行加密(L为报文长度),末尾L%8个字节则用明文填充,即最多填充7个字节,保证了数据传输的安全性。
1.3 DH密钥分配
对称加密算法的密钥分配是整个数据加密传输系统的安全基础,本方案提出一种基于DH密钥分配的方法来实现随机密钥初始化。DH算法是一种非对称加密算法,安全性基于在有限域中计算离散对数的难度,可用于两个用户在公共信道上安全地分发一个密钥。其基本原理是: 随机取大素数
1.4 密钥同步
为提高数据加密的安全性,本方案提出定时更新3DES密钥的策略,因此在每次更新密钥时存在密钥需要同步的问题。本方案定义一个密钥对结构:一个保存当前有效并且正在使用的密钥;另一个则保存旧的密钥或新生成的密钥。密钥更新过程即是翻转这个密钥对的过程,当前的密钥变为旧密钥,而新密钥变为当前有效的密钥。密钥同步步骤:
(1)A生成新的3DES密钥,但不急于立即应用,而是先通知给B;
(2)B收到新密钥,并不立即激活它,而是暂时继续使用旧密钥,并且给A回复一个确认信号;
(3)A收到B的回复,立即激活新密钥;
(4)B收到A的加密数据时,如果发现密钥已经更新,则同步使用新密钥,否则继续使用旧密钥。
2 CA身份认证
局域网之间通过Internet通信组成的数据加密传输系统包括若干个局域网(LAN)及一个认证中心(CA),LAN通过其网关(Gate)连接到Interne,tCA负责为这些网关发放并管理X.509证书。系统的拓扑结构如图2所示。
图2 数据加密传输系统拓扑结构
本方案提出一种基于OpenSSL实现的CA 对网关进行身份认证的策略。OpenSSL是采用C语言开发并全面支持SSLv2/v3及TLSv1协议的开源安全软件包,包括SSL协议库、密码算法库及应用程序三部分。基于OpenSSL建立一个完整的数字证书系统即方便又具有良好的安全性与稳定性。X.509证书可以应用于CA在线和CA离线两种身份验证模型,如图3所示。
图3 两种数字证书验证模型
对于CA在线模型,B把A证书拿到CA中验证,然后把验证结果返回给A;对于CA离线模型,B用CA根证书验证A证书。可见CA离线模型具有更方便灵活的优点,因此本方案采用CA离线模型。
网关向CA申请X.509证书的步骤:
(1)CA为自己产生一个自签名根证书及证书私钥req x509 newkey rsa: 2048 keyout cakey pem outcacert pem;
(2)各个网关向CA申请证书req new keyrsa: 1024 keyout certkey pem passout pass: password outreq pem configinfo batch;
(3)CA给网关签发X.509证书ca inreq pemoutcert pemnotext passinpass:password configinformation batch。
CA给网关签发X.509证书的同时,也将自己的根证书一起发给网关,以便将来实现CA离线。当两个网关都拥有X. 509证书后,它们就可以进行身份认证了。X. 509证书身份认证步骤:
(1) A 将X. 509证书发给B;
(2) B用从A 的X. 509证书中提取A 的公钥x509 in cert pem checkend noou ,t B 用该公钥加密一个随机数并发给A;
(3) A 用私钥解密收到的随机数并返回给B;
(4) B 通过比较随机数来验证A 的身份,同理,A 也通过这种方式来验证B 的身份。
在该方案中,若网关向CA 申请证书的数据被非法拦截并篡改,则可能导致证书申请失败,系统遭到拒绝服务攻击。为此提出了一种改进的方案,网关先从CA获得CA 根证书,然后用CA 根证书中的公钥加密申请证书的数据再发给CA。这样,即便数据被拦截,监听者也无法对数据进行篡改。
3 测试结果及分析
表1是数据加密传输系统在启动和停止加密卡两种状态下传输速率的测试结果。
表1 传输速率测试结果
测试结果显示,该数据加密传输系统的传输速率是不加密的传输速率的68 94% 左右,即加密后传输速率下降了30% 左右。
表2是数据加密传输系统在连续运行7 d后的稳定性测试结果。
测试结果显示,在长时间大量数据传输的测试中系统工作依然正常,表明该数据加密传输系统具有很好的稳定性。
表2 稳定性测试结果
4 结束语
提出一种采用基于OpenSSL的认证中心对网关服务器进行身份认证,用DH 算法分配初始密钥,用SSX31 B加密卡对传输数据进行3DES加解密的软硬件结合的数据加密传输方案,在Linux 环境下可实现局域网之间Internet通信数据的加密传输。测试结果表明,该方案具有很好的性能,非常值得进一步研究。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:一种数据加密传输方案的设计与实现