Java程序的安全机制研究
摘 要
计算机技术现已广泛的应用到各个领域,并取得了良好的应用效果,但是基于其应用背景,安全问题一直以来都是重点研究内容。Java程序因其安全性特点与其他技术相比更受欢迎,其具有完善的安全机制,只有在验证身份后,才可获取相应的权限,对提高网络数据传输安全性具有重要意义。本文对Java程序安全机制进行了简要分析。
【关键词】Java程序 安全机制 安全管理器
Java语言是一种基于类型安全的强类型语言,利用Java语法与Java语义来规定Java类型,并保证Java程序的安全性。随着计算机技术的不断发展,Java程序安全性不断完善,其安全机制包括“认证”、“权限控制”、“加密、解密与签名”、“安全套接字连接”等。但是从应用实际现状来看,任何程序的应用安全都是相对的,想要在现有基础上更进一步提高Java程序安全性,就需要对其安全机制进行深入研究。
1 Java运行方式分析
Java程序主要采取先编译、后解释以及执行的运行方式,其程序代码并不在本地操作系统层上运行,且不能直接调用本地操作系统方法与工程,而是需要通过JVM调度与审核来完成一切运行。JVM作为Java程序运行的虚拟平台,应用此种运行方式,一方面可以保证Java程序平台无关性,另一方面同时也可以为Java程序安全性提供审核空间,以及相应安全检测策略,避免网络环境中存在恶意程序对计算机程序进行攻击与破坏,提高程序运行安全性。
2 Java安全特性分析
2.1 类型安全
Java程序运行时想要保证自身安全性,首先需要保证类型系统的安全性。对类型安全进行分析,需要从两个方面进行,即类型检查与类型安全。一般情况下,计算机整体结构中,任何区域均存有必要的Java对象,并且每个对象均具有自身对应的类标签,来确定对象对应的类可以允许完成这个操作,即动态类型检查。此种方法在实际应用中,虽然可以保证系统能够正常运行,但是长时间运行会存在效率较低问题。基于此可以选择用静态类型检查,即在对程序进行运行前,需要对其进行全面分析,确保某个标签检查操作能够正常运行,则Java只会对其进行一次检查。否则,若并不确定是否能够对某个标签检查操作成功,则在程序载入前会报出错误。另外,Java系统运行安全还存在一个常见问题,即类型混乱。一般Java系统会将对象看作为内存块,被分配的内存包括一个接一个排列起来的所有对象数据域。一旦程序内某个指令需要引用某个对象时,便需要一个确定目标地址的因素,即类型标签。在此种运行程序下,如果想要从根本上来确保Java系统安全性,前提是要确定这个类型标签是否已经被恰当的标记。
2.2 语义分析
可以从三个方面来对Java进行语义分析,即公共变量、被保护成员变量以及Java包。
2.2.1 公共变量
Java语法中对公共变量进行了定义,其可以被任何Java类方法改写,包括跨过命名空间且来自网络的Applet程序,这就决定了公共变量中存储数据会存在一定的风险。
2.2.2 被保护成员变量
被保护成员变量能够被创造这个变量的类,这个类所在包以及子类中所有成员访问。这样代码就可以通过验证自己身份权限,确定自己是某个包成员而完成内部所有变量的访问。
2.2.3 Java包
系统仅仅给Java包提供了基本模板,虽然其在命名空间表面上为分层状态,但是Java包模板并不能成功嵌套。当能够成功嵌套模板时,程序员才有权限限制安全敏感组件的可见性。
3 Java安全管理器分析
3.1 安全管理器概述
Java安全管理器可以为Java虚拟机环境建立一个防护作用的“沙箱”,确保为程序的运行提供一个安全限制的操作环境,如常见签名验证、定义安全策略以及安全管理器检查操作权限等,来保证JVM外部资源的安全性,避免受到JVM内部恶意代码的损坏。对于Java安全管理器来说,其可以提供灵活性较高的安全策略,以及细粒度访问控制,授予不同资源访问权限,最终构建成为Java程序安全机制。
3.2 安全机制类型
3.2.1 确认源文件安全
在确定源代码来源具有较高可靠性后,向其分配相应操作权限。Java安全管理器能够为载入代码提供代码签名机制,来保证代码避免在加载到本地虚拟机之前过程中被恶意篡改,提高其安全性。
3.2.2 分配安全策略
即在Java安全管理器验证代码来源后,向其分配相应安全策略。如安全策略可以为一个Java.sercurity.Policy的实现类,其主要提供安全策略的定义与权限检查功能。同时,由启动类加载器所加载核心类并不受安全管理器控制,在实际应用中,需要利用类加载器避免核心类被伪装代码替换。
3.3 Java沙箱
可以说Java沙箱为Java程序安全机制的核心,对于Java程序来说,其必须要在自己虚拟沙箱内执行,来保证其运行安全性。其中JVM只向Java程序授予一组特定权限,来对其系统其他部分的访问动作进行限制。Java沙箱主要是利用安全管理器来对各项权限进行检查,并通过安全管理器来达到权限控制的目的,除安全管理器外还包括访问控制器与策略文件两部分。在执行操作前,Java安全管理器确定是否允许执行此操作,通过跑出SecurityException来拒绝此项操作,但是大部分情况下其不会做出拒绝操作的最终决定,而是通过访问控制器来检查。访问控制器对策略文件进行搜索,最终确定是否允许执行此项操作。其中,策略文件为一个文本文件,可以通过任何文本编辑器进行编辑,或者是选择用policytool GUI编辑策略文件。
4 结语
Java程序在实际应用中相对广泛,结合程序运行环境特点进行分析,为提高其运行安全性,需要在现有基础上做更为深入的研究。即对程序安全机制运行方式进行分析,掌握其要点,遵循其运行原理来采取措施进行优化,降低外界因素对程序运行环境的损坏。
参考文献
[1]杨哲慜.Java语言的程序漏洞检测与诊断技术[D].复旦大学,2012.
[2]王晓亮.Java智能卡Applet安全下载机制的研究与实现[D].西安电子科技大学,2009.
[3]陈磊.Java的安全机制研究与分析[J].电脑知识与技术(学术交流),2007,12:1596-1597.
作者单位
郑州电子信息职业技术学院 河南省郑州市 451450