时间:2023-03-23 15:24:03
引言:寻求写作上的突破?我们特意为您精选了12篇软件安全论文范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
2企业网络安全管理的方式
2.1企业网络安全管理可能遇到的问题
作为企业网络安全实验教学,我们需要尽可能的模拟更多的企业网络问题给学生来思考和解决:(1)给你一个IP地址,你能准确地找到这台机器么?你需要什么辅助你?(2)有人说他能上内网,但外网不行,你会想到什么?(3)有人说他QQ还可以聊天,但网页打不开,你怎么想?以上模拟的问题都是企业中最容易出现的,在让学生思考以上问题的同时,以下问题才是需要让学生们在模拟企业网络管理者的时候需要规划的:(1)研发部门的服务器突然增加了,可是给他们的IP地址不够分了,怎么办?(2)财务数据库服务器数据很敏感,可是外地分公司的业务又必须访问,你将制定怎样的策略?(3)规划的网络是固定IP还是自动分配呢?
2.2解决问题的注意事项
2.2.1节点安全
更多的时候我们需要让学生们了解到通过各种软件保障设备的稳定运行是预防节点安全的主要手段。我们可以通过监控系统日志实现对系统信息日志、权限管理日志和资源使用率日志的管理;通过监控硬件状态实现对温度、电压、稳定性和硬件故障的管理;通过异常警报实现对冲突异常、侵入异常、失去功能异常、突发性性能异常等状况的管理;通过容灾实现对硬件损坏、停电、失火、散热失效等的管理。
2.2.2软件安全
最复杂最难管理的就是软件安全,因为我们所有的服务器硬件都是为运行在上面的软件服务的,而软件又都是由人根据需求编写代码开发出来的应用程序。往往一款软件需要很多人的协作开发,由于各种局限性,在开发过程中无法考虑各种情况,因此软件都会有各种各样的缺陷,需要不断的修正。有的缺陷是无伤大雅的,而有的缺陷却是致命的。你不是开发者,这些缺陷对你来说又是不可控的。你只能被动的防范这些缺陷,而往往修补这些缺陷都发生在缺陷产生危害之后。然而装的软件越多,这些缺陷也就越多。更要命的是,病毒、木马它们也是软件,操作系统自身无法识别。杀毒软件可以处理病毒、木马,但是安全软件一不小心也会成为不安全的因素。例如:金山网盾事件、暴风影音事件等。尽管如此,我们依然可以防范,那就是把握以下原则:(1)最少安装原则:提供什么服务就只装什么服务或软件,其他一律屏蔽;(2)最少开放原则:需要什么端口就开放什么端口,其他一律屏蔽;(3)最小特权原则:给予主体“必不可少”的权限,多余的都不开放。
2.2.3数据安全
不论是节点安全还是软件安全,我们最终的目的都是为了保障数据安全。这也是网络安全的终极意义。这是我们在课堂上务必让学习网络安全的学生了解的内容。数据安全其实是数据保管安全,涉及以下4个方面:(1)数据在存储介质上的物理安全。即防范存储介质损坏造成的数据丢失隐患。(2)数据在存储介质上的逻辑安全。即防范因各种操作造成的数据逻辑破坏、删除或丢失的隐患。(3)数据在空间上的安全。即防范因各种灾难造成当地的整个数据完全损毁的隐患。(4)数据在管理上的安全。即防范敏感或机密数据通过公司内部员工人为泄露的隐患。数据传输安全是互联网安全的重点,主要防范重点如下:(1)数据在传输过程中被阻碍(例如,DDOS攻击);(2)数据在传输过程中被窃取(因为无线上网设置不当造成公司资源外泄);(3)数据在传输过程中被修改(网页注入式攻击)。
计算机软件是计算机运行系统中有关程序和文档的总称,属于计算机硬件设备的控制中心,可以满足人们的各种实际需求。计算机安全从软件方面来书,软件开发部门开发的软件既要满足用于的各种需求,也要有效降低开发成本,更要避免其他软件开发剽窃或者复制软件,最大程度的保护自己的知识产权。而用户也要求功能齐全、实用性好、保密性好、具有高性价比的软件,尤其是软件的安全性能,因此计算机软件安全指的是软件不易被剽窃和软件自身的安全性。
(二)计算机网络信息安全问题
计算机用户缺乏网络安全意识和信息保密意识,同时计算机网络系统还不够完善,有一定的安全漏洞,这是引起网络风险的一个主要因素,比如,Windows系统自身存在着一定的问题、软件自身携带的插件等,这些存在着一定的安全隐患,为不法分子提供了机会,有些黑客会侵入计算机的安全系统,甚至导致数据丢失或者系统的瘫痪。此外,计算机病毒入侵也对计算机网络安全产生威胁。因为病毒具有很快的传播速度,只要病毒进入网络,既对计算机安全运行产生影响,也将计算机数据破坏,极大的损害了用户的利益。
二、计算机安全问题的解决对策
(一)计算机硬件安全问题的对策
当前,人们的日常工作、学习和生活和计算机息息相关,为了维持计算机更长的寿命,并促使其更好的为人类服务,我们在一定程度上要了解计算机,并且具备普通的维修常识。可是,计算机的寿命是有限的,用户有必要对操作流程进行学习,然后正确使用计算机,如果计算机发生问题要及时维修,避免计算机硬件遭到更严重的损坏。用户熟练掌握计算机日常使用规范以及基本的维护知识可以促使用户及时发现计算机安全问题,并且提早做好预防,促使计算机更好的服务于用户。
(二)计算机软件设施安全问题的对策
首先加密计算机软件,并且确保密码的安全性,因为计算机软件非常容易复制,因此计算机软件安全防护的一个重要手段是密码保护。而一个密码只在一段时间内有效,因此用户要定期对密码进行更改,确保计算机软件安全。其次,为了从源头上确保计算机软件的安全,就要做好它的安全设计。软件设计人员在开发计算机软件的过程中要全面细致考虑软件的安全问题,比如从软件用途方面来说,就要对用途肯能带来的风险进行考虑,并且提前制定应对措施;在开发完软件之后要全方位检测软件,及时修补检测出来的漏洞,并且提高检测次数,最大程度的避免软件漏洞。而用户在使用软件的过程中如果发现问题就要及时解决问题,并应用合理措施实施修补,确保安全运行软件,避免不必要的风险。
(三)计算机网络信息安全问题的对策
计算机病毒主要通过网络以及硬件传播,所以要定期升级计算机软件,应用最新的版本,确保计算机软件具有较少的漏洞。此外也要及时更新浏览器的版本,确保网页浏览的安全性。在浏览网页时尽量不要浏览不合常规的网站,不安装不合常规的软件,确保浏览的安全性。
计算机网络安全涉及到计算机技术中的各个方面,如网络技术、通信技术、密码技术等等。计算机网络安全的标准是网络中的硬软件、系统的安全受到保护,在发生恶意侵入时不受破坏。在网络刚产生时,人们对于网络的要求侧重于可用性以及其方便程度,那时对于网络安全性的认识和重视度都不高。因为最初的网络没有遍布全球,主要是局域网,所以基本不存在网络安全的问题,于是人们也没有做必要的防护。后来网络技术日渐进步,互联网遍布全球,将世界联系起来,网络安全问题便逐渐成为不可忽视的重大问题。网络具有关联性的特征,所以在进行网络上的操作时,很容易在安全方面受到威胁。目前的众多网络产品,也是基于基础网络协议进行发展开发的,与互联网有着同样的安全问题。
1.2网络开放性
开放性是互联网的最基本特征,互联网的基本准则之一就是自由开放。目前我们使用的网络,处于互联网产生以来开放性最强的状态。互联网从最初的局域网发展成为今天的世界性的网络,为的就是更加方便人与人之间的交流。网络的开放性为广大用户提供了丰富的资源,但也在同时为黑客提供了可乘之机。网络安全便成了开发者和用户共同关心的核心问题。
1.3网络的控制管理性
互联网将世界联系在一起,每个用户都是网络中的一个元素,个人计算机以及局域网都连接在公共网络中。网络具有的关联性使得对网络进行攻击时,只需要对网络中的关键点进行攻击,就可以对整个安全系统造成影响,就能够击溃整个安全系统。互联网中的关键点十分重要,若这个关键部位的安全保护做到位,互联网的安全便有了保障。若关键点丧失了安全性,整个互联网的网络安全就难以维持。安全系统被破坏后,网络运行环境就会变得复杂,缺乏可控性以及安全性。这对每个互联网中的用户都会造成严重的影响,轻则导致文件的丢失,重则造成金钱的损失。
2网络安全威胁
网络面临着多方面的威胁,一方面在于网络信息的威胁,另一方面在于网络设施的威胁。网络安全受到威胁的首要原因是人为的疏忽,在对计算机进行配置时,因为操作人员产生疏忽,产生安全漏洞,这样便给了不法分子攻击计算机的机会。用户在对计算机进行设置时,没有浓厚的安全意识,例如口令密码设置不够安全以及防火墙不能及时维护,这些因素都会给电脑带来安全危害。网络安全受到威胁的第二个原因是他人的恶意攻击,其中包括两个方面:第一,主动攻击,这种方式是人为对数据流进行修改、延迟、删除、插入以及复制的操作,通过这种操作读计算机安全进行攻击,主要是对信息进行篡改和伪造;第二,被动攻击,这种方式是截获信息,通过特殊手段监视或是偷听信息,以达到信息截获的目的,这种方法比主动攻击较难发现。网络安全受到威胁的第三个原因在于软件漏洞,软件的漏洞通常会成为黑客进行攻击的主要目标,通过攻击漏洞可以摧毁整个安全系统,除了软件漏洞,开发人员在研发软件时会留有一个“后门”,方便对软件进行升级,这也容易成为黑客攻击的对象。网络安全受到威胁的第四个原因在于管理疏漏。
3基于软件工程技术的网络安全防御
3.1防火墙
防火墙可以在硬件上进行建设,它起到了分离器、分析器和限制器的作用。它在两个网络进行连接和通信的时候发挥作用,对信息进行过滤和控制。防火墙包括很多类型,应用型、检测型和过滤型是最为常见的。使用防火墙,可以对内外网络正常运行提供保障,但防火墙也存在一定的弱点,它无法阻止LAN内部的攻击。
3.2访问控制
访问控制是通过对操作系统中访问权限进行设置,限制访问主体对访问客体的访问。访问控制是通过软件技术对网络安全进行防御的主要手段,它通过对网络资源进行保护,使网络资源避免非法的访问。访问控制技术主要包括入网访问控制、网络权限控制、属性控制以及目录级控制等。
3.3杀毒软件
病毒是主要以一个程序的方式存在和传播的,也有些病毒是以一段代码的形式。病毒运行后,会对计算机造成破坏,使计算机无法正常运行,严重的则会损伤计算机的操作系统,使整个系统崩溃,乃至使硬盘遭到损害。计算机病毒还有自我复制的功能,他们可以自身进行复制后,通过移动设备和网络大肆传播出去,感染网络内开放的其他计算机,对其他计算机也造成破坏。对于计算机病毒的防治,可以分为几个模块,分别是病毒检测、病毒防御和病毒清除。目前市面上有很多种类的杀毒软件,选择高质量并且及时更新的杀毒软件,是十分重要的。安装杀毒软件后,要及时对电脑进行病毒扫描,检测出病毒的存在后,要及时进行处理和清除,保障计算机不被病毒感染,达到保护计算机安全的目的。安装好的杀毒软件,不仅是对于一台计算机安全的维护,也是对网络安全的维护,杀毒软件及时清除病毒,防止了病毒通过网络传播出去,造成大批计算机系统遭到破坏。
计算机软件安全检测主要是进行计算机软件漏洞的检测,计算机软件漏洞的检测主要针对软件可能存在的缺陷且该缺陷有可能导致软件在应用中存在一定的风险。由于软件安全检测对于软件开发工作是极为重要的过程,对软件安全检测工作也是需要相应地高度重视。
1 计算机软件安全检测
计算机软件安全检测是利用运行程序的方式来发现软件编写过程中存在的一些漏洞并对漏洞进行修改的过程,从而对计算机软件本身可能存在的风险进行有效地避免和改正,软件安全检测是软件开发中及其重要的一环。软件安全检测所需要达到的目标是用更少的测试过程来实现更大的软件安全覆盖面,达到高效快速地发现软件漏洞。目前网络中存在很多种对计算机软件安全检查的方法,但从本质上看,进行计算机软件安全测试的方法主要两大类。大部分检测方案都是基于静态检测和动态监测两大类检测方法。
2 进行软件安全检测的意义
计算机软件的安全检测过程是整个软件开发中极为重要的一个步骤,越早发现软件中可能存在的一些故障问题,就意味着越早解决问题,就能将软件出现问题的概率降到最低,有效地预防软件崩溃。而计算机软件的安全检测则主要是对软件中可能留存的一些漏洞进行测试,以免该漏洞在今后的日常使用中致使软件出现故障,因此,对计算机软件的安全进行检测是很有必要性的。
3 软件安全检测存在的问题
3.1 软件安全检测人员涉及广泛
由于计算机软件的相关特性,软件安全检测工作涉及的方面广泛,所需要的检测人员及技术的要求也就对应地提高,需要各方面的技术人才。对于检测人员的多元化问题就极为重要,不仅人员要齐,各方面的合作也要密切。只有多部门的密切合作以及与软件开发相关部门的密切沟通,才能高效的解决软件检测中出现的各种疑难问题。如果没有密切的合作,在软件安全检测中,各自为战,没有有效的沟通,不能从实际出发,软件安全检测将无法顺利进行下去,即使发现问题也没有有效的办法解决问题。
3.2 软件安全检测工作量巨大
计算机检测是一个系统的复杂的过程,有时候检测工作量巨大。在进行对于系统级软件或者代码级工程的分析工作时,进行软件安全相关检测必须需要进行大量的工作的。不仅如此,在所需检测的软件的规模较大的时候,还要对软件的结构设计方面进行必要的分析。而且在对所需检测的软件的各个方面进行分析的过程中一般采用仿真环境和相应的分析工具来进行相关的检测工作,因为这两种分析比较切合实际工作,较为合理,所以这些分析工作都是必须进行的,这些必须进行的工作会大大增加软件安全检测过程的工作量。
4 软件检测问题解决方法
4.1 在对软件进行综合分析的基础上进行检测
检测人员在进行软件安全检测的工作时,必须考虑到每个软件都有其独一性,每个软件都有不同的侧重点,只有在对软件进行系统化的综合分析的基础上,才能高效的制定符合该软件的有效检测方案,只有合适的才是最好的,在进行综合分析时还应考虑到符合用户需求,这样实行的检测程序才是最为可靠的。
4.2 大力推广检测人员多元化
由于软件安全检测工作涉及范围大,需要的检测人员的技术方面也不尽相同。所以需要推广人员多元化需要在进行软件安全检测时注意安排相近但不完全相同的人员在一起。大力推广检测人员的多元化,对于软件可能存在的安全问题能够更可能的发现,并且由于检测人员的多元化,对于出现的问题得以解决的可能性也会增加。在推广多元化的同时,也需要注意各部门之间的合作问题,集中优势技术人才,加以密切的合作,将专业技术人才的潜力发挥到极致。多元化的人员和密切化的合作能够到达检测工作的事半功倍,提高软件安全检测效率。
4.3 选择合理的安全检测方法
对于大量种类不同;用户需求也不同的软件,检测人员需要选择合理的检测方法。对于有些系统级软件和代码级工程,如果采用了不符合要求的检测方法,有可能造成工作白费,耗费大量人工精力和大量资源及时间,最后所得的结果有可能不符人意。没有一个能够符合所有软件检测工作要求的安全检测方法,只有选择合适的检测方法,才能达到预定的目标。
总体来说,合理地利用安全检测方法,在最短时间内有效的找出漏洞,及时进行修改。以下对于三种方案进行简要地介绍:
4.3.1 模糊检测
当今采用的模糊检测是在传统检测技术上进行改进的检测技术,其主要是在白盒技术上发展改进的检测技术,有效地继承了模糊测试和动态测试的优点,具有准确高效的特点。
4.3.2 基于故障注入的安全性测试
故障树的建立工作是该安全检测方法的基本。此方法将系统发生故障几率最小的时间作为顶事件,在此基础上在进行中间事件、底事件的寻找工作,利用逻辑门符号再将顶事件、中间事件与底事件进行连接,完成形成故障树的工作。在保证精度的条件下,此方法可以实现故障检测的自动化,实现检测的高效性。
4.3.3 基于属性的测试
基于属性的检测工作首先要完成确定软件的安全编程规则工作,再进行检测待测程序的代码是否都遵守其确定的规则编码,采用这种方法能够有效地分析安全漏洞。另外,近年大量分布式软件快速发展就是基于web服务的快速发展,如何利用好web服务的优势,将很大程度上取决于如何合理完成这些软件的安全检测工作。而基于web服务的软件的安全检测也将是适用于基于属性的测试方法中的一项重要部分,高效的完成确定软件的安全编程规则工作,也就将检测工作完成了一大步。
5 结束语
软件安全检测是重要的一环软件开发工作,合理利用安全检测,做到软件潜在漏洞的早发现、早修正、早解决,有效地避免软件出现故障的恶性后果。随着计算机技术的发展,对于软件安全的重要性也在增加,进行软件安全检测的必要性也在增加。对于研究软件安全检测的方法具有重要意义和广阔前景。
参考文献
[1]朱岩.浅析计算机软件安全检测存在问题及方法[J].科技创新与应用,2012(14).
[2]张开.计算机软件安全检测问题研究及检测实现方法[J].软件,2012(07).
[3]潘博.浅谈计算机软件安全检测方法[J].电脑知识与技术,2013(13).
[4]刘锋.计算机软件安全检测方法研究[J].信息通信,2013(06).
信息网络安全事件发生比例的不断攀升、病毒利用软件漏洞猖狂地传播使得人们越发认识到信息安全的重要性。一般认为,传统的信息安全技术可以借助防火墙(包括软件和硬件防火墙)审核通过网络的报文、限定用户的访问权限等来防止非授权用户对重要数据的访问,但是这一观点是建立在软件安全基础上的。网络应用软件需要暴露在网络环境下,并且授权外部用户可以透过网络来访问此软件。通过网络,攻击者有机会接触到软件,如果软件本身存在漏洞,那么所有的防火墙就形同虚设。暴露于网络的应用软件往往成为被攻击的目标,是网络应用软件安全的重灾区。美国国家标准与技术研究院(nist)2002年的一项研究表明,美国花费在软件缺陷方面的费用达到595亿美元。公安部2008年全国信息网络安全状况与计算机病毒疫情调查分析报b说明,在发生的安全事件中,未修补或防范软件漏洞仍然是导致安全事件发生的最主要原因。
1安全测试的定义
安全测试是鉴别信息系统数据保护和功能维护的过程。安全测试需要涵盖的6个基本安全概念是:保密性、完整性、权限(身份验证)、授权(权限分配)、可提供性、不可抵赖性阴。软件开发商都存在解决安全威胁方古的问题。对软件开发商来说,安全性是其核心要求,这是由市场力量所驱动,也是由保护关键基础结构及建立和保持计算的广泛信任的需要所决定的。所有软件开发商面对的一个主要挑战就是创建更加安全的软件,使其不需要频繁地通过修补程序进行更新。软件安全已经成为评判软件质量的一个重要标准,软件安全测试则成为保证软件产品能够符合这一标准的重要手段。软件的安全性测试主要是测试在正常和非正常情况下,软件能否对数据进行安全有效的操作。
2软件开发生命周期流程(参见图1)
对于软件行业来说,要满足当今提升安全性的需要,软件供应商必须转为采用一种更严格的、更加关注安全性的软件开发流程。这种流程旨在尽量减少设计、编码和文档编写过程中存在的漏洞,并在软件开发生命周期中尽可能早地检测到并消除这些漏洞。用于处理来自internet的输人、控制可能被攻击的关键系统或处理个人身份信息的企业和消费者软件最需要实施这种流程。在很多实际的软件开发项目中,安全测试已经成为sdl一个不可或缺的组成部分,并成为整个项目过程中的长期任务。黑盒一白盒测试方法往往执行在产品递交客户之前,但有的甚至在投人使用之后都未进行安全检测和风险评估;在一些安全性要求较高的项目中,虽然将安全风险评估纳人预算,但在实际操作中却对其并未作过多考虑。这样,所导致的直接后果是在开发工作几近完成的情况下进行问题分析处理所造成的成本将远远大于在软件开发阶段进行缺陷修改的成本。即便是从充分利用现有的有限资金和资源的角度来考虑,也有必要将安全测试囊括到sdl中。这样做虽然不能取代软件开发后期的渗透测试和脆弱性测试,却可以有效减少后者在施过程中的投人。
开发人员应该根据客户的功能需求来制定相应的安全规约,利用内建的明确的控制机制来降低安全风险。开发人员可以根据风险评估的结果来确定测试项目:软件能否可靠运行(safety)以及软件运行结果是否可靠(security)。
软件开发生命周期((sdl)中常用的测试方法有:单元测试、集成测试和验收测试。
2.1需求、设计阶段—安全性分析
在软件项目的设计过程中,人们往往只是关注系统的特性和功能,而没有充分考虑其他重要的非功能问题(例如性能、可用性、平台支持、安全,及要在稍后的软件开发生命周期中需要解决的安全性),导致了项目中许多不必要的波动和延迟。由于安全性分析影响了整个的设计和架构,因此应该在项目设计阶段充分地审查和了解它们。
安全性考虑包括一系列问题,例如访问控制和授权、敏感数据的适当处理、数据和存储器访问的适当使用,以及加密方法。一些安全性需求不是非功能的需求,如所实施的加密类型。另外,许多安全性需求是更直接地面向用例的,并且需要定义主要场景,以及定义备选路径和异常路径。在没有将功能的和非功能的需求适当地定义及并人软件中的情况下,编码错误和设计缺陷会表现出关键的信息和操作处于危险。我们应该像对待其他的需求那样处理安全性需求,并将安全性需求划分出优先级,设定范围,同时作为整体用例和功能需求的一部分进行管理。
2.2实施阶段—单元测试
受测试方式的影响,开发者对软件安全风险的评估不可能面面俱到。最典型的就是在代码设计阶段,开发者可以通过单元测试来检验代码行为,这些结果都是可以预知的,但是受到范围的局限,不能测试这些类或者模块集成后的行为。
实施单元测试可以从软件基本单位(单个类)的检测上保证输人的有效性;在可能出现恶意攻击的地方,也可以利用这一思想来组织针对单个类或者方法的单元测试,从而组织起软件内部的纵深防御策略,防止恶意行为对软件安全造成的损害。但是,这一方法将软件各组件进行强制孤立,因此对于因大量组件交互而引起的软件缺陷,利用此种方法无法检测。
单元层的安全测试比较适合于防止缓冲区溢出,格式化字符串以及数据缺失的审核。
2.3验证阶段—集成测试
在集成层,软件的整体安全属性变得可见和可测试,使得这一层的可测试属性数量相对单元层而言要多得多,但是对于跨站脚本和网络服务器提供的一些服务(例如安全套接层ssl和url过滤)的测试,存在一定的困难。我们可以将实际案例和风险分析的结果作为组织集成测试的指南。
集成测试要求测试人员通过安全测试培训,并且是有熟练技术的软件开发人员。
在这一层,我们可以开展诸如注人缺陷验证、旁路验证以及访问控制等方面的安全测试,来源于外部代码的安全审查结果也应该以集成测试的方式加以确认。
2.4阶段—验收测试
验收测试是软件产品交付客户之前的最后一个测试阶段,是在真实的测试环境中,利用基于恶意事件的安全检测模板,测试在典型的渗透活动中可被识别的安全缺陷。验收测试的这一特性(基于安全检测模板),使得我们可以借助于强大的自动化测试软件进行检测,并且可以用验收测试的结果来完善渗透测试报告内容,从而有助于开发人员理解软件的脆弱性以及针对软件脆弱性所采取的补救措施是否有效。
验收测试针对软件的外部api,因此不如单元测试和集成测试松散,并且只能测试当前已知且暴露的漏洞或者缺陷。非定制的商业软件重新设计的关键功能或者其他改变都会影响到软件的整体安全性,因此,如果改变会使得软件产生不可预知的缺陷,针对这些缺陷的测试就应该在单元层或者集成层开展,而不是在验收层。
在验收层,我们可以测试针对解释性程序(sql, xpath,ldap等)的注人式攻击、跨站脚本攻击、跨站请求伪造等。缓冲区溢出及格式化字符串等软件缺陷也可以在验收测试层得到检测。
3安全测试队伍
软件测试一度被认为是编程能力偏低的员工的工作,直到今天,仍然有许多公司把优秀的人才安排在编码工作上,也有更多公司让优秀的人才进行设计,仅有很少公司让优秀的人才进行测试工作。实际的软件工程实践证明,让对软件思想有深刻理解的工程师进行软件测试,可以大幅度地提高软件质量软件供应商还必须认识到组织测试人员进行“安全进修”对安全测试的成功实施至关重要。在这些情况下,软件供应商必须负责对其工程人员进行适当教育。根据组织的规模和可用的资源,拥有大批工程人员的组织可建立一个内部计划对其工程师进行在职安全培训,而小型组织则可能需要依赖外部培训。
测试人员要像攻击者那样带有“恶意的”想法去思考,而且在测试软件时还要扮演攻击者,攻击自己的系统,以此来帮助发现软件的安全漏洞。安全测试并不会总是直接导致安全溢出或者暴露可利用的漏洞,从而引出安全缺陷。要安全测试尽可能地发挥作用,测试人员需具备较强的分析能力,而这更多的是依靠熟练的开发技术和开发经验。
4漏洞举例:一个sql的注入式漏洞
有几种情形使得sql注人攻击成为可能。最常见的原因是,使用拼接形成的sql语句去操作数据库。譬如,传入用户输人的管理员用户名和密码,把这2个参数拼接形成sql语句,通过执行该sql语句,以便验证用户输人的管理员用户名和密码的正确性。具体过程如下:
一般情况下,用户传人正常的用户名和密码进行验证,如传人“myname”和“mypassword”进行验证,得到的sql语句将是:
这个sql语句很正常。但是,这只是开发人员预期的做法:通过管理员用户名和密码来验证账户信息。但因为参数值没有被正确地加码,黑客可以很容易地修改查询字符串的值,以改变sql语句的逻辑。譬如,分别传人“myname’ ori=1--” , "mypassword",得到的sql语句将是:
在用户名“myname’ or i=i--”中,第一个“”’结束了原有字符串中第一个单撇号的配对,"or”后面的“i=i”会导致不管前面的验证结果如何,都会返回真true值,而随后的“一”将把其后的sql语句注释掉。现在问题出现了,不管使用什么用户名和密码,都能验证通过。在存在漏洞的数据显示页面,如果注人join语句,就能获取数据库里的所有数据,显示在页面上,如获取用户名、密码等;而注入up-date/insert/delete语句将改变数据,如添加新的管理员账号等。这样,数据库将不再安全。
一、征文范围
1. 新技术应用环境下信息安全等级保护技术:物联网、云计算、大数据、工控系统、移动接入网、下一代互联网(IPv6)等新技术、环境下的等级保护支撑技术,等级保护技术体系在新环境下的应用方法;
2. 关键基础设施信息安全保护技术:政府部门及金融、交通、电力、能源、通信、制造等重要行业网站、核心业务信息系统等安全威胁、隐患分析及防范措施;
3. 国内外信息安全管理政策与策略:信息安全管理政策和策略研究,信息安全管理体制和机制特点,信息安全管理标准发展对策,网络恐怖的特点、趋势、危害研究;
4. 信息安全预警与突发事件应急处置技术:攻击监测技术,态势感知预警技术,安全监测技术,安全事件响应技术,应急处置技术,灾难备份技术,恢复和跟踪技术,风险评估技术;
5. 信息安全等级保护建设技术:密码技术,可信计算技术,网络实名制等体系模型与构建技术,漏洞检测技术,网络监测与监管技术,网络身份认证技术,网络攻防技术,软件安全技术,信任体系研究;
6. 信息安全等级保护监管技术:用于支撑安全监测的数据采集、挖掘与分析技术,用于支撑安全监管的敏感数据发现与保护技术,安全态势评估技术,安全事件关联分析技术、安全绩效评估技术,电子数据取证和鉴定技术;
7. 信息安全等级保护测评技术:标准符合性检验技术,安全基准验证技术,源代码安全分析技术,逆向工程剖析技术,渗透测试技术,测评工具和测评方法;
8. 信息安全等级保护策略与机制:网络安全综合防控体系建设,重要信息系统的安全威胁与脆弱性分析,纵深防御策略,大数据安全保护策略,信息安全保障工作评价机制、应急响应机制、安全监测预警机制。
二、投稿要求
1. 来稿内容应属于作者的科研成果,数据真实、可靠,未公开发表过,引用他人成果已注明出处,署名无争议,论文摘要及全文不涉及保密内容;
2. 会议只接受以Word排版的电子稿件,稿件一般不超过5000字;
3. 稿件以Email方式发送到征稿邮箱;
4. 凡投稿文章被录用且未作特殊声明者,视为已同意授权出版;
5. 提交截止日期: 2014年5月25日。
三、联系方式
通信地址:北京市海淀区首都体育馆南路1号
邮编:100048
Email:.cn
联系人: 范博、王晨
联系电话:010-68773930,
中图分类号:G642 文献标识码:B
1引言
“信息安全”是信息安全本科教学的核心专业课程。我校本科“信息安全”课程自2005年开设,我们认识到:
(1) 信息安全课程的教学需要重视理论的讲授,使学生掌握解决问题的基本技术,更要强调实验教学,培养学生解决安全问题的能力。
(2) 信息安全一个整体概念,解决某一个安全问题常常要综合考虑硬件、系统软件、应用软件、代码安全、协议安全等多个问题,因此需要培养学生的综合安全技能,安全实验内容的系统性尤为重要。这里的系统一方面是指实验内容自身的体系完整,也包括实验内容与其他计算机或安全专业课程的有机关联。此外,为了适应实际应用的需求,实验类型也应多样,可分为原理验证型、操作配置型、编程开发型、综合应用型。
(3) 目前的信息安全教学受到学校资金、场地等硬件条件的限制,缺乏实验所需的软硬件,不能开设课程所要求的全部实验,而且在现实的实验环境中,模拟网络攻击、恶意代码的分析等对实验环境具有潜在危害的实验也不能完成。因此,建立信息安全虚拟实验平台也是我们实验教学工作中的一个重点。
我们根据本校的特点,在学校“研究性教学示范课程《信息安全》”项目、“网络信息安全实验课程研究与实验平台建设”项目的支持下,作者在“信息安全”实验课的实验内容设置、实验平台建设、学生能力培养等方面做了有益的实践和探索。
2“信息安全”实验课教学内容的设置
2.17大类实验模块
计算机网络环境下的信息系统可以用如下的层次结构来描述。
为了确保信息安全,必须考虑每一个层次可能的信息泄漏或所受到的安全威胁。因此安全实验的内容应当注意系统性,从以下几个层次研究信息安全问题:计算机硬件与环境安全、操作系统安全、计算机网络安全、数据库系统安全、应用系统安全以及安全管理。
我们遵循信息安全PDRR模型的核心思想,以及“信息安全类专业指导性专业规范”项目组提出的“信息安全类专业知识体系”,并结合我们编写的教材,设置的“信息安全”实验课程的内容包含7大类30多个模块:
第1类:密码学基础与密码技术应用。包括对称、非对称密码系统、公钥密码系统、消息摘要、数字签名、信息隐藏与数字水印等实验模块。
第2类:硬件与操作系统安全。包括常用硬件设备防护、使用微软基准安全分析器分析系统漏洞、Windows用户帐号口令破解、Windows系统安全配置、微软安全小工具的使用等实验模块。
第3类:数据库安全。包括SQL Server 2000的安全管理等实验模块。
第4类:网络安全。包括网络扫描工具的使用及其编程实现、网络嗅探工具的使用及其编程实现、远程控制原理与实践、网络防火墙的使用和攻防测试、Snort入侵检测系统的使用、使用SSL为Web服务器配置安全通信、利用OpenSSL的C/S安全通信程序设计等实验模块;
第5类:恶意代码与安全程序设计。包括Web入侵方法实验、代码复审与静态分析、恶意软件的剖析与清除等实验模块。
第6类:应急响应与灾难恢复。包括数据恢复软件 Easy Recovery的使用、计算机取证软件使用等实验模块。
第7类:风险评估与安全管理。包括安全扫描工具使用、风险评估工具使用、整体安全方案设计等实验模块。
2.2实验组织及实验类型
全部30多个实验共分为4种实验类型:
第一种:验证型实验。学生在实验平台的浏览器端输入实验参数,由服务器运行仿真软件,并将实验结果返回用户,如实践RSA算法原理。
第二种:操作配置型。学生从安全实验平台的浏览器端下载实验所需的工具软件,如网络攻击、防火墙、入侵检测工具等,接着在单台计算机上实现的虚拟网络环境中完成实验内容。
第三种:编程开发型。将核心源代码程序以类、功能模块或组件的形式提供给学生,学生在浏览器端下载程序模块,自己动手编程实现,如利用OpenSSL开发包进行安全通信程序设计。
第四种:综合应用型,如为校园网设计安全方案等,需要涉及安全需求分析、安全产品的选择与部署、安全评估、应急响应与灾难恢复、安全管理等多层次上的安全问题。
每个实验以3人小组协同来完成。一般以一周为完成时间,在这期间,教师还可以利用发送电子邮件、在线答疑等方式解答学生提出的问题。
2.3“恶意代码与安全程序设计实验”模块介绍
计算机安全专业的学生一般都学习过C、C++等程序设计、软件工程、网站开发等课程,那么“信息安全”课程的学习如何与之有机关联呢?学生如何在已学课程的基础上从安全的角度进一步提高知识水平呢?下面以实验内容第5类的“恶意代码与安全程序设计实验”模块为例,对实验内容及其实施做一介绍。
模块1:软件安全实验知识准备
在这个知识准备模块中介绍:
(1) 软件安全问题,包括软件安全问题与信息安全的关联、软件安全开发生命周期等,例如介绍风险分析和代码复审,并解释这些行为应该发生是在软件开发生命周期中的哪一个阶段、哪种情况下。
(2) 软件安全漏洞与攻击,包括缓冲区溢出(buffer overflows)、跨站点脚本攻击(cross-site scripting)、错误开放认证(fail open authentication)、隐式表单(hidden form fields)、编译注入(interpreter injection)、竞态条件(race conditions)等,并介绍相关的攻击术语以及如何利用以上安全缺陷的入侵。
(3) 安全设计原则,介绍由Saltzer和Schroeder提出的八项安全机制作为软件设计与实现原则,例如最少特权(least privilege)、自动防故障缺省(fail-safe defaults)和特权分离(separation of privilege)。
模块2:Web入侵方法实验
利用OWASP (the Open Web Applications Security Project, 开放网络应用软件安全计划) 设计的WebGoat 安全学习教程。要求学生使用Web Scarab测试工具来完成WebGoat实验。WebScarab是一个用来分析使用HTTP和HTTPS协议的应用程序框架。
模块3:代码复审与静态分析实验
代码复审是软件系统安全性检查的一个重要部分,它可以在软件投入运行甚至系统没有集成前发现和修复安全漏洞。要求学生使用ITS4、PCLint、Fortify等静态分析工具快速发现代码安全漏洞,并对这些工具的优缺点进行分析。例如,ITS4的一个明显缺陷是,它对所有出现strcpy()的语句都报警。
模块4:恶意代码剖析与清除实验
对恶意代码的剖析是与操作系统、软件工程、网络等安全紧密相关的重要实验。恶意代码的剖析实验要求:恶意代码运行主机的安全性、运行主机操作系统的安全性、感染环境的安全性、被感染系统的快速恢复、对恶意代码感染前后的操作系统进行分析、仿真操作系统的多样性、减少成本。
虚拟机作为一种仿真技术可以完全仿真硬件平台,这样就可以对病毒研究提供大量的仿真PC,节省了硬件成本。而且不必担心病毒对硬件的破坏,同时通过单独的最简单的病毒研究网络来减小对于其他网络的感染,这样也解决了病毒研究环境的安全性。此外,一般的虚拟机系统管理软件都可以保存虚拟操作系统的当前状态,因而可以完成“对病毒感染前后进行分析”的实验要求,也可以解决被感染系统的快速恢复的问题。因此,利用虚拟机技术是完成恶意代码剖析实验的一个很好的解决方案。
3“信息安全”实验课教学平台的建设
实验平台的建设思想是:采用虚拟机软件VMWare在单台计算机上实现多台虚拟机以完成信息安全相关实验,学生通过Web访问,完成实验的知识准备、实验内容及相关软件的下载、实验报告的提交等工作。学生在浏览器端按一定步骤完成实验,最终获得实验结果。下面介绍该平台的设计思想、系统结构及工作机制,该平台的使用情况并提出了进一步的工作。
3.1平台设计原则
虚拟实验系统的设计遵循以下原则:
(1) 开放性原则:本实验系统基于校园网,任何接入校园网的学生都能使用本系统。
(2) 交互性原则:给出交互信息,对学生的操作做出实时反馈。
(3) 安全性与可靠性原则:系统自身运行保证安全可靠,并对用户的使用过程通过日志记载。
(4) 易于维护原则:系统的模块化设计,这样既节省维护费用,又便于实验项目的及时更新,保证虚拟实验教学的不断发展和完善。
3.2虚拟实验平台的结构
如下图所示,虚拟实验系统包括若干实验组,每组一般由3人组成,每组中包括:
PCm(Personal Computer, m=1,2,3),实验室中供学生使用的PC机;
VPCn(Virtual Personal Computer, n=1,2,3),在某台学生机PC上虚拟出的客户机。
整个实验室还设置:
LabS (Laboratory Server),实验服务器,实验内容的、更新等;
LabC(Laboratory Console),实验室控制台,实验室PC机的管理等工作。
3.3系统中的软硬件部署
以一个实验组的软硬件部署为例介绍。
(1) 架设硬件。这个过程很简单,将实验室中的PC同时接到一个交换机上。
(2) 在PC1上创建虚拟机。安装VMWare Workstation软件,虚拟出3台主机,VPC1-3的IP地址为192.168.2.1-192.168.2.3。在虚拟实验环境的操作系统选择上应当注意多样化,我们选择安装两个主流操作系统Windows 2003 Server和RedHat Linux,它们分别代表了Windows系列商业操作系统和开放源代码系列的类UNIX操作系统;配置上采用单主机双启动的方式选择启动Windows 2003 Server或RedHat Linux;身份认证采用网络统一认证:Windows 2003 Server采用Windows的活动目录认证,RedHat Linux通过pam-smb在Windows的活动目录服务器上进行身份认证。
整个系统采用虚拟主机的方案,即虚拟主机是在物理计算机(称为宿主机)的操作系统上(称为宿主操作系统)通过软件模拟出来的“计算机”(称为客户机,其上安装的操作系统称为客户操作系统),客户操作系统仅仅是宿主操作系统上的某个特定的数据文件。客户机上的任何操作只会影响宿主操作系统上的这个数据文件,提供虚拟主机的软件还能在客户机上虚拟出计算机设备(如网卡、磁盘等),其中,虚拟的网卡可以与宿主机通信,或与宿主机所连接的物理网络通信,或者,一个宿主机的多个客户操作系统还可以通过虚拟的网卡组成网络,该网络可以与物理网络连接也可以不连接。
这个技术对于网络安全实验是非常有意义的。例如,可以在客户操作系统上测试病毒的特性,在客户操作系统组成的网络中测试网络配置,或者安装、配置某个操作系统而不用担心会弄坏宿主操作系统导致重新安装,也可以通过拷贝客户操作系统的数据文件来统一实验环境。
3.4系统角色分工
虚拟实验系统采用登录机制,用户进入虚拟实验室,首先必须以某种身份登录。例如:教师用户可以将自己创建的新的虚拟实验上传到数据库,以充实实验内容。而学生用户则无此权限。
3.5系统运行情况分析
本虚拟实验系统具有以下一些显著的优点:
(1) 利于实验的实施。通过虚拟机软件的基本功能,可以保证信息安全实验的安全性。例如在模拟的网络攻击中,虚拟机一旦崩溃,可以把整个虚拟机删除,就像删除普通文件一样,保证了原计算机操作系统环境的稳定性;
(2) 实验成本低,易于实验规模的扩展。利用虚拟机技术,在单机中模拟多个系统环境、模拟规模不等的网络环境,提高了设备利用率,降低了实验成本,按照图2中1:3的比例就可以节省2/3的硬件资源。使得信息安全的实验的普及、推广成为了可能。
(3) 便于实验内容的扩展。由于许多仪器或部件都是“虚拟”的,其功能是由开发者定义的,可随着新设备的推出重新“生成”新的仪器设备,使之能跟上网络技术的不断更新;
(4) 虚拟实验系统将使教学不再局限于有形的实验室中,教学和动手操作实践的空间和时间得到无形的扩展。
通过一段时间的实际应用,本系统在使用中还存在以下一些问题:
(1) 系统额外开销增大。x86虚拟化技术的最大不足就是虚拟化本身会带来系统开销,同时也要消耗部分资源。这个开销主要集中在CPU资源消耗、内存资源消耗和硬盘存储资源消耗上。幸好硬件资源的过剩,可以缓解这一问题。
(2) 平台系统维护复杂度提高。采用虚拟化技术后,由于涉及CPU内核管理和虚拟化软件与操作系统间兼容性等问题,无论是宿主操作系统的升级,还是虚拟操作系统的升级,都需要慎重处理,即存在维护难度。
(3) 硬件配置需要适度提高。虚拟化技术是要在一台计算机上运行尽可能多的系统和应用,因而高配置的单台机器要比低配置的单台机器更适于部署虚拟化系统,不过这样的硬件成本投入也能获得更显著的效益。
本系统的进一步工作,将实验成绩的管理纳入系统,实验考核成绩的查询打印等,进一步提高实验系统的服务质量。
4学生能力的培养
实验教学的设备建设是搞好实验教学的重要环节,而教师对设备的使用、对实验内容的把握、对学生学习过程的跟踪和指导更加重要。我们在实验教学中,要求各组学生的实验报告中包括以下栏目:实验目的、实验原理、实验详细步骤、实验小结与思考、参考文献。其中实验思考题由教师事先提出若干,要求学生在实验中解决这些问题,并鼓励学生在实验中发现新的问题并努力解决。参考文献也做了数量的要求,这样一方面是为了督促学生广泛阅读相关文献,另一方面教师也可从学生所列的参考文献对学生实验的完成质量有所了解。
对于各组学生提交的实验报告还会利用上课时间进行讨论,取长补短,归纳整理。课后,教师还对完成得较好的实验报告加以进一步地指导,进行提炼和升华,形成论文。目前,我们这种:实验――汇报讨论――提炼升华的三阶段实验指导经验已取得了一些成果,如学生已经完成了“高性能的文件加密系统”、“OpenSSL的C/S安全通信程序”、“U盘病毒及免疫程序”、“基于系统调用截获技术的软件行为分析系统”等安全软件,并已在《电脑编程技巧与维护》等杂志上发表。此外,“软件可信验证”实验作为我校“本科生科研训练计划”项目立项,学生以团队形式参与完成。学生的资料搜集以及整理分析能力、编程能力、安全整体意识、写作能力、团队协作能力都得到了培养和提高。
5结束语
信息安全的理论和技术还在不断的发展和更新中,这就要求教师不断更新信息安全实验课的实验内容,加强与其他课程的关联,不断完善实验平台,进一步培养学生安全能力,使得“信息安全”的教学真正做到使学生学以致用。
参考文献:
[1] 陈波,于泠,肖军模. 计算机系统安全原理与技术[M]. 北京:机械工业出版社,2006.
课程创新点
经过长期的教学实践,西电科大“编译原理”课程组已建立起了较完整的教学体系,包括年龄结构和知识结构合理的教师队伍、反映本课程水平的自编教材及先进的教学实践环境,其特色和创新点概述如下:
1)坚持教学科研并重,不断更新教学内容
课程组成员坚持教学与科研并重,十几年来先后主持与承担国防预研、国防预研基金、横向科研课题等十余项,发表学术与教学研究论文20余篇。这些课题所研究内容大部分是编译领域的核心技术,科研成果水平在国内高校同行中处于领先地位。丰富的科研积累为教学的实施与改革提供了充足的养分。
课程组能够将科研成果及时转化到本课程的教学中,同时不断更新教学内容和教学手段,极大地发挥了学生的学习热情和创造性,提高了“编译原理”课程教学的水平和质量。同时,通过科研与教学相结合,形成了一支学术造诣高、知识与年龄结构合理、勇于改革且团结协作的课程梯队。
2)重视实验教学研究与改革,培养学生工程实践能力与素质
计算机科学与技术专业是一个实践性要求很高的专业,而“编译原理”是本专业中对软件设计实验环节要求更高的课程。“编译原理”开设了独立的综合实验“函数绘图语言解释器构造”,其中的三个实验子系统“词法分析器构造”、“语法分析器构造”、“语法制导翻译图形绘制”有机连为一体,反映了“编译原理”课程的核心技术和实验水平,充实了理论教学内容,培养了学生的工程实践能力与科研素质。
我们还根据国内教学条件的实际情况,在所承担的科研项目工作基础上,于1993年自主研制开发了在微机和DOS/Windows环境下的词法分析器生成器XDFLEX和语法分析器生成器XDYACC(它们是与编译器构造领域中最具影响且被广泛使用的、Unix环境下的词法分析器生成器Lex和语法分析器生成器Yacc兼容的软件,其中XD是我校英文缩写),当时在国内是首创。1996年,我们又对XDFLEX进行了改造,增加了汉字识别的自动生成,并重新命名为XDCFLEX。至此,XDCFLEX/ XDYACC形成了具有中国特色的、教学与科研兼顾的编译器编写工具(放在我校网站上供自由下载)。此工具不但提高了我校学生的上机实习水平和“编译原理”课程实验室建设的水平,同时也被国内多所高校的教师和学生以及研究所的科研人员使用,提高了我校“编译原理”课程在国内的地位。
课程建设的实施办法
1)明确目标,合理安排。根据课程组的现有条件,制定合理的建设目标和课程质量标准,提出师资队伍建设规划以及教学过程、教学管理和教学改革等方面的基本要求。依靠教师和教学管理人员,明确职责,分级建设,责任到人。
2)树立课程整体优化的观念。在明确课程建设目标的前提下,解决相关课程之间的配合和衔接问题,推进“模块课程”或“系列课程”的整体优化,将课程建设放在专业建设和培养模式中进行优化设计。
3)重视师资队伍建设,开展教学改革与研究。课程建设应形成合理、优化的专业教师梯队,以高层次、高学历教师为主体,教师队伍中高、中、初级职称比例合适,课程负责人具有较高的学术水平和教学水平,课程组有计划地经常开展教研活动,加强对中青年教师的培养。保证每年有一定的教学改革项目或教研项目立项和教学改革成果。
4)加强教材建设,改革教学手段。一方面采用国内现有的先进教材和精品教材,另一方面根据学院自身的现有条件和专业特点组织教师自编部分具有一定创新性和特色的教材。同时制作、收集和整理电子教材、课件以及教辅材料,逐步形成立体化教材体系。根据本课程的教学特点,采用多媒体教学,建立教学网站,实现网上教学辅导。
5)建立健全学生评价、教师同行听课和教学督导组听课机制,逐步完善教学质量监控和评估体系,确保和提高课堂教学质量和效果。
6)建立有效的激励机制。对于承担精品课程建设任务并作出突出贡献的课程负责人及骨干教师在评奖、评优、晋职等方面给予优先考虑。
教材介绍
课程组曾经选用陈火旺院士的《编译原理》(国防科技大学出版社)、《编译原理和技术》,经过长期积累,在总结二十多年教学经验、科研与教学改革成果的基础上,由刘坚教授主编了《编译原理基础》教材。该教材及与其配套的教学辅助指导书《编译原理基础-习题与上机题解答》全面体现编译原理的教学规律,内容新颖先进,独创性、实用性好,教学适用性强。自2002年出版以来,已发行万余册,被若干高校选用,在相关科研技术人员中亦被广泛使用。2005年《编译原理基础》被评为西安电子科技大学优秀教材,同年,荣获陕西省优秀教材二等奖。
课程组教师
目前,“编译原理”课程组由4名主讲和3名专职辅导教师组成。
刘坚:1982年2月起在西安电子科技大学任教,教授。主讲本科生“编译原理”、研究生“编译原理与技术”等课程,研究方向为计算机软件理论与技术。主持“Ada软件开发平台技术”、“软件系统安全故障模式分析”、“软件安全模式”等课题的研究工作,发表多篇学术论文。
龚杰民:1973年5月起在西安电子科技大学任教,教授,研究方向为人机交互技术和软件开发工具。主讲“编译原理”、“形式语言与自动机理论”、“C程序设计”、“PROLOG程序设计”、“人机交互技术与可靠性工程”等课程。长期从事编译原理、形式语言与自动机、人机交互技术等课程的教学与研究。发表教学研究及学术论文多篇,著有《C语言程序设计及其应用》、《标准C语言程序设计及应用》、《人机交互技术及可视化技术》、《人-计算机界面设计》(译)等。主持的多项科研课题获得省部级奖励,其中,“触摸屏电子笔”获中国实用新型专利证书,主持的“液晶显示器和等离子体显示器的工效研究”课题成果已在日本使用。
方敏:1989年起在西安电子科技大学任教,博士,教授。主讲“编译原理”、“操作系统”、“计算机网络”等课程,参加“联合作战态势评估辅助决策模型研究”、“智能化多源数据融合”等课题的研究工作;编著教材“计算机操作系统”(西安电子科技大学出版社,2004);撰写论文多篇。
张淑平:1995年起在西安电子科技大学任教,在读博士生,副教授。主讲“编译原理”、“数据结构”等课程,西电科大 ACM/ICPC竞赛基地教练, 参加“宽带无线IP网络安全体系结构”、“基于算法的容忍入侵检测系统”等科研项目,著有“程序员教程”一书(清华大学出版社,2004),撰写论文多篇。
张立勇:2001年起在西安电子科技大学任教,在读博士生,讲师。主讲“编译原理”、“分布对象技术”、“算法设计与分析”等课程,参加“计算机软件安全模式分析”等课题研究,担任西电科大ACM/ICPC竞赛队教练。
胡圣明:2003年起在西安电子科技大学任教,在读博士生,讲师。辅导“编译原理”课程,主讲“数据库应用技术”课程,参加《编译原理基础-习题与上机题解答》的编写工作。参加“程序理解征挖掘理论与方法的研究”、“面向对象逆向工程工具研究”、“系统应用软件逆向工程工具研究”等科研项目的研究工作,撰写论文多篇。
一、电子商务网络信息安全存在的问题
电子商务的前提是信息的安全性保障,信息安全,胜的含义主要是信息的完整性、可用性、保密险和可靠性。因此电子商务活动中的信安全问题主要体现在以两个方面:
1、网络信息安全方面
(l)安全协议问题。目前安全协议还没有全球性的标准和规范,相对制约了国际性的商务活动。此外,在安全管理方面还存在很大隐患,普遍难以抵御黑客的攻击。
(3)防病毒问题。互联网的出现为电脑病毒的传播提供了最好的媒介,不少新病毒直接以网络作为自己的传播途径,在电子商务领域如何有效防范病毒也是一个十分紧迫的问题。
(4)服务器的安全问题。装有大量与电子商务有关的软件和商户信息的系统服务器是电子商务的核心,所以服务器特别容易受到安全的威胁,并且一旦出现安全问题,造成的后果会非常严重。
2、电子商务交易方面
(1)身份的不确定问题。由于电子商务的实现需要借助于虚拟的网络平台,在这个平台上交易双方是不需要见面的,因此带来了交易双方身份的不确定性。攻击者可以通过非法的手段盗窃合法用户的身份信息,仿冒合法用户的身份与他人进行交易。
(2)交易的抵赖问题。电子商务的交易应该同传统的交易一样具有不可抵赖性。有些用户可能对自己发出的信息进行恶意的否认,以推卸自己应承担的责任。
(3)交易的修改问题。交易文件是不可修改的,否则必然会影响到另一方的商业利益。电子商务中的交易文件同样也不能修改,以保证商务交易的严肃和公正。
二、电子商务中的网络信息安全对策
1、电子商务网络安全的技术对策
(1)应用数字签名。数字签名是用来保证信息传输过程中信息的完整和提供信息发送者身份的认证,应用数字签名可在电子商务中安全,方便地实现在线支付,而数据传输的安全性、完整性,身份验证机制以及交易的不可抵赖性等均可通过电子签名的安全认证手段加以解决。(2)配置防火墙。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能阻止网络中的黑客来访问你的网络,防止他们更改、拷贝、毁坏你的重要信息。它能控制网络内外的信息交流,提供接人控制和审查跟踪,是一种访问控制机制。在逻辑,防火墙是一个分离器、限制器,能有效监控内部网和工nternet之间的任何活动,保证内部网络的安全。
(3)应用加密技术。密钥加密技术的密码体制分为对称密钥体制和公用密钥体制两。相应地,对数据加密的技术分为对称加密和非讨称力日密两类。根据电子商务系统的特点,全面加密保护应包括对远程通信过程中和网内通信过程中传输的数据实施加密保护。一般来说,应根据管理级别所对应的数据保密要求进行部分加密而非全程加密。
2、电子商务网络安全的管理策略
(1)建立保密制度。涉及信息保密、口令或密码保密、通信地址保密、日常管理和系统运行状况保密、工作日记保密等各个方面。对各类保密都需要慎重考虑,根据轻重程度划分好不同的保密级别,并制定出相应的保密措施。
(2)建立系统维护制度。该制度是电子商务网络系统能否保持长期安全、稳定运行的基本保证,应由专职网络管理技术人员承担,为安全起见,其他任何人不得介人,主要做好硬件系统日常借理维护和软件系统日常管理维护两方面的工作。
(3)建立病毒防范制度。病毒在网络环境下具有极大的传染性和危害性,除了安装防病毒软件之外,还要及时升级防病毒软件版本、及时通报病毒人侵信息等工作。此外,还可将网络系统中易感染病毒的文件属性、权限加以限制,断绝病毒人侵的渠道,从而达预防的目的。
(4)建立数据备份和恢复的保障制度。作为一个成功的电子商务系统,应针对信息安全至少提供三个层面的安全保护措施:一是数据在操作系统内部或者盘阵中实现快照、镜像;二是对数据库及邮件服务器等重要数据做到在电子交易中心内的自动备份;三是对重要的数据做到通过广域网专线等途径做好数据的克隆备份,通过以土保护措施可为系统数据安全提供双保险。
三、电子商务的网络安全体系结构
电子商务的网络信息安全不仅与技术有关,更与社会因素、法制环境等多方面因素有关。故应对电子商务的网络安全体系结构划分如下:
1.电子商务系统硬件安全。主要是指保护电子商务系统所涉及计算机硬件的安全性,保证其可靠哇和为系统提供基础性作用的安全机制。
2.电子商务系统软件安全。主要是指保证交易记录及相关数据不被篡改、破坏与非法复制,系统软件安全的目标是使系统中信息的处理和传输满足整个系统安全策略需求。
3.电子商务系统运行安全。主要指满足系统能够可靠、稳定、持续和正常的运行。
中图分类号:TP393 文献标志码:A 文章编号:1006-8228(2017)05-30-04
An Android software protection scheme based on remote verification
Zhang Jianxin
(College of software,North university of China, Taiyuan, Shanxi 030051, China)
Abstract: Encrypting DEX files and SO library files can be a good way to protect the security of Android software, but the key information will remain in the local file and will leave a security risk. In order to solve this problem, this paper proposes that the key information is not hard coded in the program, but is placed on the remote server, and the critical information is confirmed by communicating with the remote service, to achieve the purpose of protecting Android software. The experimental results show that this method can effectively protect the security of Android software and has high reliability.
Key words: Android software security; remote verification; packer technology; software encryption; AES algorithm
0 引言
安卓系y占据了智能终端市场接近90%占有率[1],它的开源和内核的可移植性,既可以吸引爱好者的关注也给不法分子留下了机会。攻击者可以利用各种手段对原始应用进行破解和篡改,随着越来越多的受害者出现,人们开始重视安卓平台应用软件的保护。
文献[2]阐述了安卓各个层面的细节和攻击方法。文献[3-4]通过自定义加载的方法实现在内存中加载核心代码(SMC代码字修改)。文献[5]在设计安卓代码保护方案时将MVC的概念引入到方案的设计中。文献[6-8]提出的代码保护方法都主要依赖于加密和加壳技术。文献[9]是比较有代表性的一种方案,它通过AES加密算法加密DEX文件并将解密功能放到“傀儡class”文件中来增强其保密信息的安全性。但是上述方案在加密算法的选择或者密钥信息的保护方面都有漏洞。所以本文采用了一种文件保护和和远程校验相结合的安卓软件保护方案。
1 方案设计思路
本文提出一种基于远程校验的安卓软件保护方案,同时也用到了关键文件变形和加密的技术。
在apk包的所有文件中,最重要的是classes.dex文件。了解smali语法的人可以通过反编译和静态分析技术来破解软件。除了dex文件之外 SO文件也是攻击的目标之一,本文对SO文件也进行相应的处理。
对dex文件和so文件进行变形和加密,这样对关键文件进行保护,具体的功能模块示意图如图1。
加密模块通过AES算法加密需要保护的文件,并取得需要保护的信息部署到远程服务器,然后再重新打包;解密模块执行的时候通过壳程序调用远程服务器上的固定方法完成完整性校验,然后返回密钥信息对文件进行解密,再执行正常流程。本方案采用的方法虽然会在远程通信中耗费一定的资源,主要是对网络传输的要求比较高,但其他方面都能做到用最少的资源最大限度地增加软件的安全性。
2 关键技术阐述
保护方案主要技术点包括dex文件保护技术、SO文件保护技术和远程服务实现技术。
2.1 dex文件保护
本文提出一种自定义代码替换集的代码混淆方法用于加密前处理dex文件。自定义代码替换集可以由软件使用者自己定义,自己掌控需要替换的代码及相应位置,而替换的规则只有开发者知道,这就大大增加了分析者的破解难度,而且恢复替换所消耗的资源也少于大规模的替换,在资源的占用方面有优势,主要的工作难度都集中在前期自定义阶段。这就使得分析人员即使得到了dex文件也不能充分的了解其中代码的意义,无法顺利的进行分析。具体实现中可以把代码替换集置于远程服务器中,使规则对程序透明化。当然,为了进一步增加获得dex文件的难度,在打包之前还需要通过加密等其他手段对其进行处理。具体实现流程如图2所示。
2.2 SO文件保护
以现行的分析技术,如果我们将SO文件直接放在jni目录下打包发出,攻击者可以轻而易举地破解开发人员写出来的代码。本文在研究前人加固方案的基础上,采用一种核心文件替代的方法。通过分析java调用动态链接库的函数System.loadLibrary()发现接口中调用本地库的关键语句为nativeLoad(name,loader,ldLibraryPath),该方法执行的时候调用路径为ldLibraryPath下名字为name的SO文件,由此系统可以自己定义一个核心SO文件,对其他SO文件进行统一处理,而动态链接库中的主要实现逻辑文件则统一置于文件夹中并对其进行变形操作,最后将它放入assets文件夹。密钥信息并不在本地文件中,而保存在远程服务器中。具体处理与运行流程如图3所示。
2.3 Axis2简介
本文基于远程获取校验信息和密钥信息的功能将通过Axis2引擎来实现。
Apache Axis2项目是一个基于java的包括服务端和客户端的webservice框架。它适合轻量级的数据处理。客户端可以通过Axis2接口调用特定服务端出来的指定方法来实现某些特定的功能,用户只需要发送请求的参数,它就可以返回最后的结果。
在手机端发送密钥或者校验请求到服务端,服务端根据请求信息找到对应的方法处理数据并返回结果。服务器端的主要代码非常简单,就是通过soap消息传递当前META-INF文件夹签名或者直接发送需要的密钥请求到事先部署到服务器配置文件中的初始签名参数对比,如果判断失败则返回失败指令,让App停止运行,代码如表1所示,客户端发送请求代码如表2所示。
代码中,RPCServiceClient对象是可以处理发送与接收数据业务的专用对象;Options对象用来携带可选参数;EndpointReference对象装载服务端的URL;Object数组用来存放需要校验的数据,即META-INF文件夹的数字签名;Class数组用来指定返回值数据对应的类;Qname对象限定要调用的方法和WSDL文件的命名空间。最后通过业务处理对象调用接口中的invokeBlocking()方法实现与服务端的通信。
3 方案的实现流程
本文提出的方案包括PC端处理和远程服务。PC端处理用到代码集替换、加壳技术、MD5算法提取哈希值等。本方案将校验信息和加密算法的密钥都放在远程服务端,运行的过程中通过壳程序的指令和远程服务端进行通信,最终确定软件是否安全。
3.1 PC端处理
文件保护主要工作包括代码集标识符的定义和具体代码集的选取以及加密功能的实现。代码集标识符的定义需要遵循一定的原则,不能使用Dalvik字节码的语法指令关键字,也不能选用能够见文知义的标识符。系统根据用户输入的标识符和代码集位置,在dex文件中替换相应的代码并创建惟一标识,将一一对应的标识和代码存储在一个资源文件中生成代码集,然后用AES算法对替换后的dex文件进行加密并将密钥保留备用。
当程序中存在jni代码时,apk包中有一个lib文件夹用来存放所有的库文件,核心文件替换会先将所有的SO文件用AES算法加密,产生的密钥会部署在远程服务端供运行时调用。然后将lib文件夹压缩并修改文件名和扩展名来混淆破解者的判断,最后将其放在资源文件目录下。为了执行调用,在原位置创建一个同名的lib文件夹并在里面编写一个恢复源文件并执行具体调用的”文件”,最后在壳程序中调用该文件处理具体的操作。
3.2 远程校验
综合上述可以知道远程服务端的实现机制,在具体的实现中,校验META-INF完整性的功能可以在整个安卓应用的任何流程之前均执行调用,此功能与前面的文件加密处在软件运行的一前一后进行交叉保护,使得保护方案更加可靠。在性能方面,该手段对于资源的要求并不高,整个过程中只需要传送一个字符串接收一个字符串,或者发送一个请求获取一个字符串,对程序性能的影响基本可以忽略不计,只要在网络畅通的情况下均可执行。
4 实验验证与分析
为了验证本方案的有效性和实用性,在win7系统下对本文实现的系统Xpro v1.0进行效果测试和功能对比实验。
4.1 方案效果测试
系统加固处理发生在PC端,运行环境采用win7旗舰版系统和常用的反编译工具。首先进行整体的运行,打开该系统,选择源文件路径,把功能模块都选中,并设置好替换代码集,点击开始,执行结束后界面如图4所示。
本文从不同的应用市场的200多个应用中随机筛选出了50个没有经过外部加固手段处理的,具有代表性的应用,通过本系统的处理之后,再进行安装和使用。结果发现,它的正常使用率达到93%,并且不受Android系统版本的影响,在不同的版本上测试,结果基本一致。剩余的7%,经过进一步分析发现是程序内部已经存在签名校验机制或其他的代码保护机制,所以导致了二次打包之后无法运行,去除这部分之后,用自己新开发出来的测试程序去测,可用率都达到了100%。可见本系统是一个很可靠的加固系统。
4.2 运行效率分析
本系统对空间的消耗在一个正常的范围内,虽然会随着原始文件的大小变化出现小的波动但并不会出现加固后容量超过应用本身的状况出现,这是由加固的手段决定的,所以,本文只对加固后应用启动时间和未加固时的启动时间做一个统计分析。作为对比本文还使用了网易易盾的免费试用版和应用乐固的体验版以及本文的Xpro V1.0版分别对相同的应用进行加固,并记录其启动时间。
找出文件大小处于不同区间的十个应用的apk文件,分别在不加固、本系统加固和两个免费的商业加固系统试用版本进行加固和启动,记录应用启动时间,统计分析结果如图5所示。
从图5中可以看出,无论是哪种加固系统处理之后的apk启动时间都会有一定的延长,这是因为保护措施在正式的源程序加载之前需要一定的时间和资源来处理前面的加载工作,在本系统中,无论是对dex文件的解密还是SO文件恢复,这一系列操作都需要占用一定时间。不过,通过延长一定的初始化时间,仍在用户可以接受的范围之内的话就是值得的。本系统的效率虽然达不到商业加固应用的顶级水平,但跟它们的试用版本在效率方面也在伯仲之间,很好的完成了加固的任铡
5 结束语
本文提出基于远程校验和本地关键文件加密的安卓软件保护方案,很好的平衡了安全性和软件工作效率之间的矛盾,将校验及解密信息存放于远程服务器中,并选择了效率及安全性都很优秀的加密算法。实验证明,本方案能够有效抵抗静态,有效地保护了APK文件,在实际的应用中,本方案往往会与其他保护手段结合使用,使其发挥更大的作用。本方案的不足之处是未能考虑到远程服务器交互过程中的信息安全问题及远程服务器本身的安全问题,这也将是下一步优化的方向。
参考文献(References):
[1] 腾讯移动安全实验室.腾讯安全实验室2016年上半年手机安全报告,2016.7.
[2] 丰生强.Android软件安全与逆向分析[M].人民邮电出版社,2013.
[3] 董航.移动应用程序检测与防护技术研究[D].北京邮电大学博士学位论文,2014.
[4] 张晓,李林,许家乐等.基于SMC的Android软件保护研究与实现[J].信息网络安全,2014.11:74-78
[5] 史成洁.Android平台应用软件保护技术的研究与实现[D].北京邮电大学硕士学位论文,2015.
[6] 徐剑,武爽,孙琦等.面向Android应用程序的代码保护方法研究[J].信息网络安全,2014.10:11-17
现就常规的工作流程进行如下探讨:
一、网络文档的建立
作为网络管理员,最重要的一项任务就是建立网络文档,这是因为有很多情况要求网络管理员必须全面一贯地记录网络的情况。无论是网络突然出现问题而必须马上排除,还是因为网管员的请假或者离职,有了一份详尽、及时的文档,查找问题和维护系统的时间都将大大缩短,许多错误和混乱也可以避免。
1.何时编写文档?如果正在从草案开始设计网络文档,应该从第一天开始记录所有细节。找一个笔记本,把记录写在上面,并作为网络的一个组成部分。如果同时管理多个网络,网络文档是十分关键的。如网络管理员刚刚接手网管工作,那么第一项任务就是学习这些信息并填补缺少的细节。如果根本就没有网络文档,应立即着手查询并创建文档。网络文档需要及时更新,至少一周一次。关键是养成保持最新信息的习惯。
2.文档中记录什么?首先当然还是网络的物理基础结构;此外,应该记录所有在安装网络硬件和软件时计算机和网络适配器的配置信息。在用户进行硬件和软件升级或服务器故障需重新安装操作系统时,这些信息可以节省时间。
网络文档可以包括网络故障的恢复方案、备份步骤和日程,存储和解决方法的记录、用户请求、维护记录及长期和短期的网络扩充计划。网络管理员还可以将更新操作系统、硬件或安全措施和培训新用户的计划包容在网络文档中。
二、硬件网络资源的管理和维护
1.实施常规检查。网络管理的重大责任之一是对网络计算机实施常规、周期的诊断和防护性的维护措施。
2.排除网络故障。网络管理人员花费时间最多的就是排除网络故障。这是最能体现网络管理员的技术水平和保持冷静及逻辑思考能力的时候。随着经验的增长,解决问题的能力也会逐步提高。
网络管理员要了解各处可能发生的问题:时刻不忘在笔记本中记下调查结果和建议;利用书籍、期刊和自学培训等方式尽可能地积累常见问题的解决方法;应尽可能多地收集信息,记录在网络文档中。
3.为故障恢复作准备。提前准备不是预防网络故障发生的最好办法,但它可以减少网络故障造成的损失。在预防网络故障的计划中,网络管理员不应将自己的思维局限在普通的问题上。应该考虑得更广泛一些。设想发生了自然灾害,如地震、火灾等将整个网络全部摧毁,网络管理员该如何恢复,花费多少时间,采取哪一种步骤进行恢复。
虽然不可能对每一次自然灾害都做好充分的准备,也不可能完全避免可能会导致网络停止工作的人类的某些缺点,但却可以制订一个可靠适时的备份计划,使数据损失最小化。
三、软件管理和维护
软件管理包括添加新软件、升级现有软件和删除过时软件。如果在服务器上安装,最好在安装之前先备份好服务器。如果在工作站上安装,应该先做一个安装测试,并记录下每一个步骤,然后保证每一台工作站的一致性。如果每台工作站上都使用相同的硬件和操作系统,一致性的安装应用程序非常简单;如果网络上用户过多,可以考虑使用某些特殊工具来生成软件自动安装过程,如Microsoft系统管理服务器。
软件永远不可能完美,总会有这样或那样的问题。无论是操作系统还是设备的驱动程序,至少应每季度检查一次有无升级的提示,进行现有软件升级。对于过时软件也应及时删除。
四、管理网络安全
要想保证网络安全,应同时做好边界防护和内部网络的管理。网络管理的职责之一就是定义、实施、管理和加强网络的安全性。软件安全策略的目标是:
保证只有授权用户可以使用一定受限的网络资源,预防给予过高的权限,定时检查用户权限和用户组账号有无变更。减小数据、服务器和网络设备等由于受到疏忽操作或恶意破坏而造成的损失。防止网络中非授权的外部访问。
多年来,嘉兴市辰翔信息科技有限公司致力于IT软硬件安全检测认证,凭借着国际一流的技术,为IT软硬件“盖”上了信息安全的“合格章”。
权威认证覆盖全球
据国家工信部的《2013年电子信息产业统计公报》显示,我国2013年电子信息产业销售收入总规模达到12.4万亿元,同比增长12.7%。在信息安全日益受重视的今天,这意味着巨大的安全认证市场。就全球而言,反病毒软件的检测认证市场销售规模在2亿人民币左右,而安全硬件提供商全球多达几万家,销售额至少在几百亿人民币。检测认证行业作为IT软硬件方案服务提供商的服务商,市场前景巨大。如此大的“蛋糕”,此前一直被AV-TEST、ISCA LABs、Virus Bulletin等几家巨头垄断。
为了打破国外检测机构对计算机安全软硬件检测垄断的局面,辰翔科技通过多年来的理论研究和实践应用研发了一系列符合计算机安全技术潮流发展的检测技术和认证标准,并在一些关键的技术环节大量应用了新的检测标准和检测技术,是大中华区唯一专业从事计算机安全软硬件测试认证的公司,也是公安部计算机病毒应急响应中心的合作伙伴和唯一具有公安机关病毒分析备案的公司。除了自行研发外,辰翔科技还通过与国内高等院校的合作,研究如何将病毒流行度指标应用在计算机安全检测之上,相关论文也已经在国际会议上发表。另外,其关于计算机安全软硬件检测的专用认证标志已经在欧盟、美国和大陆成功注册。
辰翔科技作为全球主要的安全软件检测认证服务提供商,客户基本已经涵盖主要的杀毒软件提供商。值得一提的是,在手机Android操作系统安全测试领域,公司已经基本实现垄断。除了手机端的安全认证外,辰翔科技还与美国微软总部合作研发Windows安全认证体系。目前辰翔科技在全球安全软件测试认证行业主要竞争对手有6个,目标客户覆盖率基本达到国外同行水平。未来,辰翔科技将以电源产品作为切入点,进一步开展通用IT硬件(如CPU、内存、音响制品、显示器等)与安全硬件(如嵌入式反病毒硬件,硬件防火墙,邮件过滤器等)的检测认证工作。
打造全方位“防御体系”
通过从计算机软件到硬件,再加上手机与网站的安全测评,辰翔科技打造了一个全方位的安全防御圈。
安全软件测试
通过测试安全软件的多层防御能力来判断安全软件的综合防御能力。关键技术在于多层实时检测技术,传统的安全软件检测比较单一、一般都只检测安全的一个参数值,比如病毒的查杀率,误报水平等,而辰翔科技对测评体系进行了升级,摆脱单一功能检测无法反映软件综合性能的缺失,目前已经基本运用到日常检测认证中来。
云安全检测认证
辰翔科技采集最新最全的病毒样本,运用高性能的爬虫系统,通过大量的新出现的病毒和常用软件来判断云安全软件对未知病毒的响应能力、白名单库的收集能力和误报水平、云安全技术的稳定性判断,在国内率先提出了云安全检测技术的思路和测试基本框架。
手机安全软件检测认证
通过手机操作系统模拟器或真机来模拟或者重现手机安全软件在各系统上的运行情况,包括对病毒的检测查杀能力、常用功能的比较和不同病毒对手机用户的危害。目前,辰翔科技建立了一套完整的病毒分析流程,可以为杀毒软件公司提供分析支持和软件配套服务。
软件安全性评估
通过代码和行为分析判断软件是否具有恶意行为,对验证无恶意行为的软件颁发认证标志。
非安全软件类软硬件检测认证
通过辅助软件对同类通用软件和硬件进行性能评估和检测认证,对达标产品相对应的认证标志。通用软硬件的测评和认证将由辰翔科技和中国计量学院、浙江质监局共同进行研发,远期将提供市场准入认证和产品改良服务。