宫明
摘 要:攻击者可以通过各种途径窃取网络上传输的数据。如果数据使用了脆弱的加密方式或者以明文的方式传输,那么数据的安全性和网络软件系统的稳定性将无法得到保障。对于包含敏感数据的网络系统,在设计阶段应该着重思考系统安全保护方案;需要根据系统的特点定制合理的加解密策略,既要确保安全又要兼顾效率;在自主开发的数字校园网络设备监控系统中,应用非对称加密算法和对称加密算法相结合的方案,取得了满意的效果。
关键词:网络;数据;安全;加解密;非对称加密算法
中图分类号:TP39 文献标识码:A
1 引言(Introduction)
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。网络安全包含网络设备安全、网络信息安全、网络软件安全。网络信息安全侧重于保护信息的保密性、真实性和完整性。避免攻击者利用系统的安全漏洞进行窃听、冒充、诈骗等有损于合法用户的行为。其本质是保护用户的利益和隐私。数据窃听是攻击者常用的手段。2003年,有黑客在网上出售一种名为“隔山打牛”的木马程序,它植入用户电脑后可以对所在局域网进行窃听并截获一款当下流行的网络游戏账号和密码,然后以电子邮件的形式发送给攻击者。这个木马的实现原理是:首先通过ARP欺骗,把宿主计算机伪装成路由器;导致局域网内的其他计算机发送给远程服务器的数据都要经过它转发。同时它还对数据进行分析、匹配,如果发现符合那款游戏定义的数据包则进行解密,然后局域网内玩家的账号密码被秘密发送到指定的电子邮箱,最后的结果是很多玩家的游戏装备被盗,损失惨重。
这仅仅是一个开始,接下来若干年直到今天,网络上的ARP病毒从没有停止过,它们已经发展成各种各样的形式,窃取信息的种类也是五花八门。试想,如果没有黑客再去制造ARP病毒,或者杀毒软件、防御工具可以对任何ARP病毒实现绝杀。那么网络数据是否能够安全传输呢?答案是否定的。网络管理员只需要用一台计算机连接到局域网的主干路由器,就可以将数据镜像到这台计算机,剩下的事情完全由他的主观意愿决定了。诚然,有法律和道德的约束,但这些不能保证全世界的网络管理员不犯错误。所以,要实现数据在网络上安全传输,必须依赖技术手段;设计可靠、高效的加解密方案,相当于给数据加上一道牢固的锁;即使数据被攻击者截获,但在短时间内不能被解密成明文;或者攻击者需要付出巨大的时间及物质成本才能完成解密。并且攻击者无法还原,分析数据封包的格式,不能随意伪造数据封包欺骗远程服务端软件,保障了网络软件安全运行。
2 分析网络上传输的数据包(Analysis the packets
on the network)
在互联网没有诞生之前,人们通常使用软盘从一台计算机拷贝数据然后复制到另一台计算机;这种依赖存储介质的方式在今天仍在使用,软盘已经退出历史舞台,取而代之的是USB闪存驱动器(俗称U盘)、移动硬盘等。使用存储介质有很多弊端,其中效率问题最为明显,它会随着两台计算机之间距离的增加而降低;比如,某公司在沈阳的分公司需要把计算机里的资料发送到北京的总公司,那么需要把资料拷贝到存储介质中,然后借助交通工具把存储介质运送到目的地。显然这非常影响工作效率。
今天,互联网已经覆盖了整个世界。人们使用一台计算机可以在网上购物、听音乐、看电影、玩游戏、和异地的朋友交流。它最大可能为人们的工作、学习、生活提供方便。人们因此有了网上银行密码、电子邮箱密码、社交网络密码、网络游戏密码等等。有人会质疑,这些密码关系到个人隐私和物质资产,它们以什么样的形式在网络上传输,会不会被其他人窃取到,是不是很不安全?要解答这个问题,需要先知道数据是怎样在网络上传输的。
计算机之间能够相互通信,就必须约定好通用的通信方式,即协议。其中,NETBEUI、IPX/SPX和TCP/IP[1]是常见的网络通信协议。随着互联网的发展,TCP/IP已经成为使用最广泛的通信标准。在TCP/IP协议的基础上,定义了一系列的标准应用层协议[2]:HTTP、FTP、TELNET、DNS、POP3、SMTP,应用层数据按照协议规定的格式组装成数据包后由网络层发送出去。软件开发者、网络管理员通常使用嗅探器抓取网络封包进行相关的研究。图1是使用Wireshark网络分析器在本地计算机上抓取到的网络登录封包,它表示用户输入了口令和密码登录某个web应用,数据是以明文的形式发送的,从图的底部可以清晰的看到口令和密码。
使用明文传输数据不但容易泄露敏感信息,而且暴露了整个封包协议的数据结构。大多数网络应用程序都会自定义应用层协议,例如网络游戏。早期的一些网络游戏使用的加密算法比较简单,程序员使用网络嗅探器抓取游戏客户端和服务器之间通信的数据包,分析出完整的通信协议,最后开发出脱机外挂,获取大量灰色收入,严重危害了服务器程序的稳定性和可靠性。
3 定制合理的加解密方案(Customized the encryption
and decryption programme)
相对直接发送明文而言,发送方对数据进行加密必须消耗一定的系统时间,接收方也需要额外的时间进行解密;有的加密算法会增加数据的尺寸,在传输时会占用更多的网络带宽;因此加解密一定会降低系统的处理效率。对于实时交互,且交互频繁的应用,例如网络游戏,在设计加解密方案的时候,应该考虑最大限度得把效率损失降到最低。所以,针对应用系统的特点,采用适合的加解密算法,是目前普遍实施的一种数据保护方案。
笔者开发了一套数字校园网络设备监控系统。该系统采用C/S和B/S混合结构,其中B/S子系统提供简单的数据查询和统计;主要的业务逻辑处理集中在C/S子系统,它提供监测、控制、管理功能。网络管理员作为系统的使用者,需要在客户端程序输入口令和密码登录;客户端程序和服务器程序在交互过程中会传输自定义的控制指令和设备的敏感信息。这些信息一旦泄露,攻击者便可以修改全网设备的任何参数,网络安全受到巨大威胁。因此,加解密模块是这个系统最重要的组成部分。endprint
如果采用传统的对称密钥[3]算法,那么密钥存放在什么位置最安全呢?方案1:密钥存放在客户端。由于这个密钥是固定不变的,黑客只要通过反汇编与逆向工程[4]就可以跟踪到密钥。方案2:服务器随机生成密钥发送给客户端。看似很安全,因为密钥是动态变化的;但是黑客先通过逆向工程分析客户端使用的加密算法,然后在网络上嗅探密钥和密文,有了加密算法、对称密钥、密文,便能够分析出解密算法。
鉴于对称密钥算法的缺陷,笔者使用非对称密钥算法来保护系统的第一道门(身份认证)。解决方案如下:客户端发送认证请求,服务器动态生成一对密钥,即私钥(private key)和公钥(public key),服务器把公钥发送给客户端,客户端使用公钥对明文加密,然后把密文返回到服务器,服务器使用私钥解密出登录口令和密码进行身份识别。攻击者即使得到了公钥和密文,也毫无用处,因为公钥只能用来加密,要解密必须得到私钥。
用户登录成功以后,进入客户端主界面。用户对客户端程序操作的背后是客户端程序跟服务器程序交互的结果。这些敏感信息虽然没有登录口令和密码那样重要,但它们的安全性同样是不能被忽视的。此时,继续使用非对称加密并不是最佳的方案,因为非对称加密算法的复杂度高,加解密的速度远远慢于对称加密算法。笔者使用对称加密算法来保护身份认证成功后的数据传输安全。解决方案如下:认证成功后,客户端与服务器动态协商出一个密钥,由公钥加密后传输到对端,客户端与服务器后续的数据传输使用这个密钥进行加解密。
4 结论(Conclusion)
上述方案,应用到笔者开发的数字校园网络设备监控系统。该系统的C/S子系统基于Windows 8 64位企业版和Visual Studio 2012中文旗舰版开发。系统目前处于试运行阶段,客户端与服务器交互响应迅速,用户体验良好。
参考文献(References)
[1] W.Richard Stevens.范建华,等,译.TCP/IP详解 卷1:协议[M].
北京:机械工业出版社,2000.
[2] Charles M.Kozierok.陈鸣,等,译.TCP/IP指南(卷2)应用层协
议[M].北京:人民邮电出版社,2008.
[3] Behrouz A.Forouzan.马振晗,贾军保,译.密码学与网络安全
[M].北京:清华大学出版社,2009.
[4] Chris Eagle.石华耀,段桂菊,译.IDA Pro权威指南(第2版)[M].
北京:人民邮电出版社,2012.
作者简介:
宫 明(1979-),男,本科,工程师.研究领域:计算机网络,
软件工程.endprint