一种高安全的网络数据传输实现*

2016-09-08 10:32赖宇阳徐平江房超唐晓柯张海峰杜君南方电网科学研究院有限责任公司广东广州50080北京智芯微电子科技有限公司北京009
信息安全与通信保密 2016年2期
关键词:报文数据包密钥

赖宇阳, 徐平江, 房超, 唐晓柯, 张海峰, 杜君(南方电网科学研究院有限责任公司,广东广州50080;北京智芯微电子科技有限公司,北京009)

一种高安全的网络数据传输实现*

赖宇阳1, 徐平江2, 房超2, 唐晓柯2, 张海峰2, 杜君2
(1南方电网科学研究院有限责任公司,广东广州510080;2北京智芯微电子科技有限公司,北京100192)

本文提出了一种基于L2TP协议的VPN实现方法。该方法首先建立L2TP的通道和会话连接,然后在L2TP连接上建立PPP通道,通过PPP协议验证用户合法性并动态的为其分配IP地址,利用可信计算单元对数据源进行加密后传输。这种方法保证了用户数据在互联网的可靠传输。

L2TP;PPP协议;可信计算

[Abstract]A VPN implementation based on L2TP protocol is proposed.In this implementation,the channels of L2TP and session connection are firstly established,then the PPP channel is built up on the L2TP connection,and via this PPP protocol,the user's validity is authenticated and the IP address dynamically allocated to the user.User data is encrypted for transmission by trusted computing unit.This method could ensure the reliable transmission of user data in the Internet.

[Key words]L2TP;PPP protocol;trusted computing

0 引言

随着互联网技术的蓬勃发展,网络在社会生活中的重要作用日渐显现。通过广泛的使用网络,给人们的生活带来了很大的方便。

然而事情总是有利有弊,随着网络技术的普遍应用在网络上传输数据的安全性成为网络发展需要重点考虑的问题。为了避免将数据在公网上传输,学校、企业等社会团体会建设内部的局域网并通过防火墙和公网隔离。然而对于一些大型企业,在不同城市有很多分支机构。如果都要通过内网通信,则成本巨大难以实现。如果企业员工在外地出差,想异地访问企业内网则更加困难。

面对这样的需求,需要一种可以借助互联网访问局域网的方法,既可以利用互联网的便利性,又可以实现局域网的安全性。在这种背景下VPN技术应运而生。

VPN(Virtual Private Network)虚拟私有网络是通过各种隧道技术在IP族协议上实现的。企业数据通过隧道传输,隧道的建立和数据传输可以通过口令及加密来保证其安全性。

有了安全的传输链路,用户数据仍然不能透明传递。怎样产生高强度的密文,如何让数据接收方确认发送方的合法身份。需要引入可信计算平台来参与系统的安全防护,可信平台不依赖软件,采用通过认证的安全算法用硬件对数据进行加解密、签名、验签等操作。

安全的数据结合安全的链路最终实现一个高安全、可信赖的数据传输方法。

1 VPN安全链路创建

VPN应用的隧道技术主要是指L2TP。L2TP(Layer Two Tunneling Protocol)是基于链路层的隧道协议,该协议通过UDP的1701端口承载于TCP/IP之上[1]。当隧道建立后,可以在通道中建立若干个会话,这些会话彼此独立。而L2TP消息分为两类:控制消息和数据消息。其中控制消息负责建立、拆除及维护通道和会话,数据消息负责传递PPP数据。首先对L2TP的消息格式做简单介绍。

1.1 L2TP数据格式

第一个字节中T表示数据类型,S表示NS和Nr数据域是否出现,O表示后继的offset数据项是否出现,P表示该数据包是否具有较高的优先级,Ver表示数据包类型,Tunnel ID表示建立的隧道ID,Session ID表示建立的会话ID,Ns表示发送数据包的序列号,Nr表示接受数据包的序列号,Offset表示 L2TP数据与L2TP头的偏移量,Offset pad表示填充数据。

图1 L2TP包头格式

L2TP包的数据部分由不同的AVP(Attribute-Value Pair)数据域组成。格式如下:

图2 AVP信息格式

M表示对不可识别AVP的处理方法,H用来指示AVP数据是否需要隐藏。该机制用来保证一些用户隐私信息不会明文出现在报文里。如果该位置1,则后面会紧跟一个加密的AVP数据项来传送这些数据。Vendor ID表示服务提供商的ID,Attribute Type表示AVP的类型,而Attribute Value表示对应于某个AVP类型的具体值。

1.2 L2TP连接建立过程

在L2TP数据包中,消息类型要作为传送的第一个AVP紧随L2TP包头发送,消息类型规定本条数据的具体功能。其它AVP例如协议版本、主机名称则根据需要选择发送。上面流程中用到的控制消息都是独立的L2TP数据包中的第一条AVP。

SCCRQ(Start-Control-Connection-Request)该命令用于建立通道,是L2TP建立隧道的第一条命令。该命令后继多个AVP,用来协商传输参数。通道号是其中比较重要的参数,用来指定传输对端的通道号,在未协商前L2TP头中所包含的通道号和会话号都是0。

SCCRP(Start-Control-Connection-Reply)该命令用于答复建立通道的SCCRQ命令。包含与前者相同的AVP数据项,同样用来协商传输参数。该消息需要使用前一个SCCRQ命令中对方指定的通道号,同时为对方指定通道号。

SCCCN(Start-Control-Connection-Connected)用对方指定的通道号来发送本消息,表明通道的建立。

ZLB(Zero-Length Body)该数据包只有L2TP包头,没有数据体。用来通知通信对端没有后继数据包需要等待。

通过上面的命令交互,通信的双方建立了可靠的信道,接下来需要在通道上建立会话。

图3 L2TP会话建立过程

OCRQ(Outgoing-Call-Request)该命令用于协商会话号,向对方发送该消息后,对方在答复ICRP(Incoming-Call-Reply)消息的L2TP头中填入该会话号,同时返回一个会话号供发送端使用。当LAC端收到ICRP信号会向LNS端发送ICCN(Incoming-Call-Connected)信号,表明上一条ICRP信号已被接受。LNS收到ICCN后返回确认信号ZLB。

断开L2TP连接的报文为CDN(Call-Disconnect-Notify),该报文断开会话。在收到确认报文ZLB后,可以发送StopCCN报文断开整个L2TP通道。

1.3 承载于L2TP连接的PPP应用

当通道和会话建立后,就可以在相应的会话上进行PPP数据的传输了。首先要建立PPP通道,PPP协议主要有三部分构成:链路控制协议LCP(Link Control Protocol)、NCP(Network Control Protocol)和PPP的扩展协议(如Multilink Protocol)。

图4 PPP数据帧格式

PPP数据帧标志字节为0x7E,表示一帧数据的开始和结束。如果用户数据含0x7E则需要进行字符插入,第二个字节为地址固定为广播地址0xFF。第三字节为协议控制字节,在PPP中固定为0x03。

协议域在数据帧中最为重要,它规定了数据帧的功能。下面列出常用的协议域取值。

表1 PPP协议常用的协议值

数据域的最大和缺省长度为1500字节,该长度可以在建立PPP连接时协商。

(1)链路控制协议LCP

LCP报文用来建立链路连接,它作为PPP报文的数据域部分,此时PPP的协议域必须设置为0xC021[2]。为了完成建立链路的功能,LCP报文又分为请求、应答、拒绝、确认等不同类型报文。

图5 LCP数据格式

LCP的数据域包含许多不同类型的报文,用来协商建立链接时的参数,这些类型如下表所示。

表2 LCP数据域的常见参数

上面的数据类型可以包含在一次LCP协商的过程中。例如当PPP设备接收到Config-Request数据包后,可以根据自身对协议的支持程度,返回不同报文。如果支持全部的配置参数则返回Config-Ack,同时将协商的参数项原封不动的返回给发端。如果对协商参数中某些参数项不同意,则返回Config-Nak,同时将协商的参数信息返回,在自己不同意的参数项中填入允许的参数信息。发端设备会根据返回的参数信息重新发送Request数据包,协商过程直到收到Ack信号后进入下一个阶段。如果在协商过程中,通信的一方收到无法识别的参数项,则应该返回Config-Reject信息,该信息带有所有不被识别的数据项。需要注意的是PPP设备通信双方的参数配置过程独立完成。

当需要断开连接时发送Terminate-Request报文,收到回复报文Terminate-Ack后PPP连接随即断开。

(2)PPP连接的认证方法

当参数协商完毕后,通常进入PPP连接的认证阶段。Chap认证为3次握手协议,是PPP协议默认的认证方式。发送CHAP数据包需要在PPP的协议域中填入0xC223,其帧格式同LCP数据包一样,通过在代码域中填入不同的值来表示不同功能的包。

CHAP认证过程如下:

1)认证方向被认证方发送挑战帧,该帧包含自己的主机名和一段随机报文。

2)被认证方收到挑战帧后,得到其中的主机名,在本地查找与该用户名对应的密钥,使用该密钥通过MD5算法计算挑战帧中的随机报文的哈希值,将生成的新报文和主机名作为响应返回给认证方。

3)认证方收到应答后,用同样的方法找到主机名对应的密钥对随机报文进行哈希计算。将哈希结果和收到的响应报文比较,如果符合则返回成功报文,认证结束。

2 可信数据的产生

通过以上举措,系统建立了一个安全可靠的数据链路连接。然而用户如何产生一个安全可靠的数据包,即令数据以密文方式传输,又保证接收方可以验证发送者,确保收方不会收到一个伪造的数据包。为了达到这样的设计日的,我们又为系统开发出可信计算单元。

所谓的可信计算,是指在计算和通信系统中广泛使用基于硬件安全模块支持的可信计算平台,以提高系统整体的安全性。

为了更方便的实现设计日标,采用符合国家商用密码标准算法要求的UKEY作为可信计算平台。为了使系统具有更好的兼容性,将通过CSP算法中间件来调用UKEY接口进行系统的加解密操作。

UKEY平台的核心是一个安全芯片。该芯片具备国家商用密码标准算法SM1、SM2、SM3以及RSA、DES等算法,可以进行数据的加解密运算。同时该芯片具有一个微型的操作系统,可以进行文件管理、多任务调度以及对外的通信。芯片内嵌的安全体系可以为应用提供不同等级的安全权限,UKEY中的文件也可以按应用需要,在发行时赋予不同的访问属性。

UKEY平台可以产生一对非对称密钥,私钥保存在本地,不允许任何外部的读写操作。而公钥可以通过密钥导出命令,传递给应用,应用再将KEY的用户信息及公钥上传证书服务器申请公钥证书,申请到的证书最终回传UKEY形成一个可信赖的数据文件。

微软加密应用程序接口(CSP)为win32应用程序提供了用户身份认证、数据加密和签名等安全处理,然而CryptoAPI本身并不实现密码运算相关操作,而是操作系统通过调用加密服务函数CSP来实现。

CSP通过容器来组织密钥,每个容器可以存放2个密钥对,一个用于加密解密,一个用于签名验证,同时还可以保存与公钥对应的X509公钥证书。此外容器还将保存会话产生的临时密钥。

图6 CSP中间件在系统中的作用

数据加密过程描述:

1)应用发起数据加密传输的要求。

2)应用将本次登录系统的用户名发给UKEY。

UKEY校验用户名和本地证书相关信息是否一致。

4)UKEY将本地公钥证书返回应用。

5)应用校验用户信息,同时检查X509证书格式。

6)身份验证通过,应用将需要加密的数据传输到UKEY。

7)UKEY使用临时密钥加密数据。

8)UKEY利用公钥将密文及临时密钥打包成数字信封。

9)加密数据返回应用.

10)完成。

通过以上流程,可以产生基于可信计算平台的安全数据,这样的数据在前面建立的安全链路上传输,使系统的安全性达到最佳。

3 在L2TP通道上传输数据实例

下面的数据包为L2TP连接建立后在LAC端截取的数据包,下面对该数据包做简要的介绍。

图7 L2TP上传输的PPP数据包

可以看到,当L2TP连接建立后,通过该连接传输数据时必须包含通道号和会话号。每个通道可以承载不同的会话,L2TP占用UDP的1701端口。由于是L2TP的数据信息,因此L2TP包头以0x40开始。通道号和会话号都是通过建立连接时协商所得。L2TP包的数据部分是一个完整的IP包,该包的日标IP地址是本机实际想要访问的地址,而源地址则是由NCP协商得到的虚拟地址,该IP包所包含的数据内容是通信实际需要的。

当LNS收到该数据包后依次去除外层IP包头得到L2TP数据包,再去掉L2TP包头得到内层IP包,最后去除内层IP包头后将通信数据重新封装成单层的数据包按日标地址进行发送。

当外界的IP包到达LNS服务器后,根据IP包头信息LNS可以查询到对应的通道号和会话号组织成L2TP数据包,最后封装外层IP数据包将数据发往需要的LAC。

4 问题与展望

L2TP技术的兴起在一定程度提升了在互联网上传输数据的安全性,而可信计算硬件的应用强化了用户源数据的安全性。在安全的数据链路上传输可信数据在最大程度上保证了通信双方的安全性。

通过这样的设计方法,使应用获得了很好的安全保障。然而没有一种方法是绝对完美的,由于可信计算增加了系统负担、降低了效率。为了克服这种影响,需要进一步研发具有高速运算能力的可信计算平台。

[1] Townsley W,Valencia A,Rubens A.RFC2661.Layer Two Tunneling Protocol[S].1999:3.

[2] Simpson W.RFC1661.Point-to-Point Protocol[S].1994:5.

A High-Security Implementation of Network Data Transmission

LAI Yu-yang1,XU Ping-jiang2,FANG Chao2,TANG Xiao-ke2,ZHANG Hai-Feng2,OU Jun2
(1Electric Power Research Institute China Southern Power Grid Co.,Ltd.,Guangzhou Guangdong 510080,China;2Beijing Smart Chip Microelectronics Company Limited,Beijing 100192,China)

TP393.08

A

1009-8054(2016)02-0109-04

2015-10-09

赖宇阳(1987—),男,硕士,工程师,主要研究方向为计量自动化系统安全防护;

徐平江(1977—),男,硕士,工程师,主要研究方向为智能电网;

房 超(1982—),男,博士,高级工程师,主要研究方向为通信及电力自动化技术;

唐跷柯(1977—),男,硕士,高级工程师,主要研究方向为芯片设计;

张海峰(1978—),男,硕士,高级工程师,主要研究方向为芯片设计;

杜 君(1982—),女,硕士,工程师,主要研究方向为电力系统自动化。

猜你喜欢
报文数据包密钥
基于J1939 协议多包报文的时序研究及应用
二维隐蔽时间信道构建的研究*
幻中邂逅之金色密钥
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
密码系统中密钥的状态与保护*
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
C#串口高效可靠的接收方案设计
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统