浅析软件安全的问题以及策略
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅析软件安全的问题以及策略
发表时间:2012-06-18T10:50:35.763Z 来源:《赤子》2012年第8期供稿作者:骆其城
[导读] 从用户的角度来讲,软件安全主要是指访问控制策略,主要是保护资源不被非法使用和访问。
骆其城(广东广播电视大学,广东广州 510091)
摘要:软件安全是一门新兴学科,目前还没有统一的标准定义。根据我国现有的教材和资料,软件安全(Software Security)是指采取工程的方法使得软件在敌对攻击的情况下仍能够继续正常工作。软件安全涉及领域广泛,包括软件工程、计算机网络、密码学、法律等。关键词:软件安全;软件缺陷;反跟踪技术
软件安全是计算机安全的一个关键问题。从用户角度来讲,使用的软件必须具有高度的安全性,这是软件首先必须具备的条件。任何公司都不希望敏感信息被泄漏出去,特别是涉及个人隐私或对公司具有重大商业价值的资料。从软件开发者的角度来讲,开发的软件在满足人们日常生活、工作的需求以外,还要很好的保护自己的知识产权,防止软件被复制或被跟踪仿制。可是,软件在开发过程中,不可避免存在着缺陷,包括软件在运行时的错误或设计时存在着漏洞。另外,由于互联网的使用越来越广泛,截至目前,中国超过5亿人在使用各种各样的互联网应用软件,使得安全的隐患也在不断地增多,例如各种病毒的出现以及木马程序的入侵。因此,如何保证软件的安全,尤其显得重要。
1 计算机软件的安全隐患
软件缺陷(Defect),常常又被叫做Bug。所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常能力的问题、错误,或者隐藏的功能缺陷。根据IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。软件缺陷产生的主要原因有:(1)软件开发过程中自身的特点造成的问题,由于需求说明书包含了错误的需求或者漏掉一些需求,或者软件需求定义难以做到清晰明白,从而引起功能和产品的缺陷;(2)系统设计中的不合理性,将导致功能模块的划分不科学,使开发的流程不够完善,容易产生问题;(3)技术的问题,包括错误的算法、复杂的逻辑等都将产生缺陷。软件漏洞是软件开发者在开发时的疏忽,或者编程语言的局限性而产生的。常见的漏洞有堆栈溢出、格式化字符串漏洞和SQL注入漏洞等。在计算机软件中,如我们日常所使用的OFFICE、Windows XP系统等就存在着许多的漏洞,黑客利用这些漏洞来获取资料或入侵电脑,因此我们必须为我们的系统和软件下载补丁,以保护我们的系统和软件不被入侵。
由于软件存在着缺陷以及漏洞,给黑客们制造恶意软件提供了后门,如病毒、蠕虫和木马等。病毒通常会将其包含的负载放置在一个本地计算机上,然后执行恶意的操作,如删除用户数据,或者不断进行自身的复制,这都将会损坏数据、消耗系统资源并占用网络带宽等。而木马通常是在系统中提供后门,使黑客窃取数据。
另外,由于反编译软件的出现,通过对他人软件的目标程序进行逆向分析、研究,推导出他人软件产品所使用的思路、结构、算法等设计要素,作为自己开发软件的参考或者直接用于自己的软件产品中,使得软件开发者蒙受巨大的损失。
2 计算机软件安全的策略
从用户的角度来讲,软件安全主要是指访问控制策略,主要是保护资源不被非法使用和访问。它主要包括入网访问控制策略、操作权限控制策略和防范恶意代码的攻击。具体可以采取以下一些措施:
2.1 设置安全的口令和不同权限的帐号,阻止非法的入侵和访问。计算机软件最常用口令的方式来控制系统资源的使用,如果没有使用安全的口令或缺口令的系统帐号,容易被入侵者进入系统内部。当当网宣布,今年3月19日至21日紧急冻结该网所有账户的余额及礼品卡,原因就是个别消费者账户出现被盗、余额被盗用等情况。黑客利用木马程序,获取用户的帐号和密码,然后把金额和礼品转到另外的帐户,导致金钱的损失。经验表明,木马程序利用记录键盘的操作从而截取用户的帐号和密码。一个安全的密码最好的设置方式是包括大小写字母、数字以及特殊符号。另外,如果软件提供软键盘(即通过点击鼠标输入密码),则采用此方式输入密码。这都将有效地保护用户的帐号和密码。
2.2 安装杀毒软件、更新病毒库和下载补丁。由于病毒等恶意代码能够入侵我们的电脑,从而对系统资源构成威胁以及窃取用户资料。安装杀毒软件能够有效的保护我们的电脑系统和软件。杀毒软件必须购买正版的杀毒软件不仅是对软件开发者知识产权的尊重,同时市面上的盗版软件有些本身就带有病毒。另外,我们必须及时的更新病毒库以及下载系统和软件的补丁,阻止最新的病毒等恶意代码的入侵。
从软件开发者的角度来看,开发的软件不仅需要满足用户的需求,更需要保护自己的知识产权,防止软件系统被复制和被跟踪仿制。对于软件安全,只有不断地进行技术创新保护自己的软件。常见的软件保护技术有以下几种:
(1)光盘保护技术。软件在发布时,在光盘创建专用的扇区,当程序运行时校验这些扇区。如果软件被复制到一个新的载体中,如一个新的光盘或者移动存储器中,程序会探测到在这些新的载体里面没有特殊的扇区,从而拒绝继续运行。(2)序列号保护。这是目前最常用的软件保护技术。软件发布商在产品上印上一个唯一的序列号,软件安装时要求用户输入这个序列号,安装程序验证这个序列号是否则有效,若有效则可以完成安装。这种方法容易实现,但也可能导致合法的序列号被共享,使其他用户也能使用。(3)加密狗。加密狗是一块可以连接到计算机的微型芯片,通常通过连接器与计算机连接,加密狗通过在软件执行过程中和加密狗交换数据来实现加密的。加密狗内置单片机电路,使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。内置的单片机里包含有专用于加密的算法软件,该软件被写入后就不能再被读出,这样就保证了加密狗硬件不能被复制。(4)反跟踪技术是一种防止利用调试工具或跟踪软件来窃取软件源码、取消软件防复制和加密功能的技术。破译者利用反汇编工具将程序翻译成代码的形式,再通过分析源代码,然后结合程序调试工具对程序进行动态的跟踪,以观察程序的流向和结果,从而推导出他人软件产品所使用的思路、算法等,作为自己开发软件的参考或者直接用于自己的软件产品中。一个典型的抵御反编译的做法是消除符号信息法。其原理是在编译好的非字节码程序中的内部符号信息(如类名、类成员以及实例化的全局对象名),使用字节码混淆器把所有的符号名字重命名为没有任何意义的字符串,从而起到了保护的作用。
3 结论
无论对于用户或者软件开发者来说,软件安全一个关键问题。我们都希望所使用的软件是一个没有漏洞、安全的可靠系统,这样才能保证我们的资料和信息不被窃取。另外,软件开发是人类智慧充分的表达的过程,凝聚着诸多人文价值。保护软件不被复制和跟踪仿制,