APP下载

基于Java开发平台的安全性研究

2016-10-18东晓岩

电脑知识与技术 2016年21期
关键词:安全性体系

东晓岩

摘要:在日益强调信息安全的今天,Java技术的应用十分广泛,采用Java开发平台的厂商很多,基于Java程序设计语言的开发工具也很多,在这个背景下,Java开发平台的安全性受到越来越多的关注与讨论。该文首先就Java开发平台的整体情况进行概述,以此来引入Java开发平台安全性的研究,从体系结构、程序语言以及API功能三个方面阐述Java开发平台的安全性,以供参考。

关键词:Java开发平台;安全性;体系;程序语言;API功能

中图分类:TP311 文献标识码:A 文章编号:1009-3044(2016)21-0024-02

随着科学技术的迅猛发展,计算机硬件技术逐步走向瓶颈,软件开发成为电子信息技术产业的重点发展方向。而信息安全自“斯诺登”事件爆发后,被各国所重视,为何我国在极力研发自主微机芯片以及操作系统,主要就在于引进的硬件或操作系统可能存在的后门或漏洞会造成信息的泄露。而Java程序设计语言被开发出来,便以其优秀的特质,流行于国际,并伴随着Internet的发展,被广泛应用于各个领域,在强调信息安全的今天,Java开发平台的安全性受到了巨大的挑战,因此对其进行深入的研究具有十分重要的意义。

1 Java开发平台概述

2 Java开发平台安全性研究

2.1 体系结构

Java的体系结构在Java虚拟机中运行,在此环境中进行创建跨平台应用程序。主要工作的原理分为两个部分,编码以及运行。在编译时,将Java源代码文件(.java)经由编译器(javac)编译成二进制字节码文件(.class),运行时通过类加载器加载class文件,包括编译出来的二进制字节码文件以及原始的API class文件,并进行连接和初始化,由字节码校验器校验后交由执行引擎运行。执行引擎包括解释器以及JIT代码生成器,解释器将指令解释成适用于本地操作系统的方法并执行,JIT代码生成器的功能与解释器功能类似。程序在执行中,保证安全的代码指令被同时解释为本地操作系统适用的方法并执行,从而控制外部资源的访问。因此,Java的体系结构为其安全性提供了支持,这主要与Java程序的执行方式有关,从上文来看,不同平台相同的应用程序代码,要先经过编译,使这些代码成为符合Java规范的二进制字节码,然后再进行解释执行。重点就在于这种解释执行的模式为Java程序的安全性提供了有力的支持。从Java的平台无关性可以看出,Java应用程序如果使用标准为百分之百的API功能,且不直接调用本地操作系统的方法,则可以不用修改直接应用与多种平台,这为程序在嵌入式或者异构网络环境方面的应用提供了方便,Java开发平台的网络移动性,催生出一种新的软件模式,可以通过网络将软件和数据传送到客户端,并以必需的软件浏览和操纵数据。这无疑能够为安全性提供更好的支持。

2.2 Java程序语言

Sun Micro system公司在开发Java时,将安全性进行了充分的考虑,这是Java广受欢迎的重要因素。在程序语言层次上主要有以下几个方面的内容,体现Java开发平台的安全性。

第一,语言规范和编译器。通过语言规范和编译器可以很好地保证源代码的安全性,在Java程序语言的设计时就将C、C++中可能出现的不安全操作进行了总结并且予以限制。而且程序语言不允许直接访问内存,采用引用分配对象的方式而不是指针,无法通过数学操作更改指针,Java程序语言中具备真正的数组,并以严格的边界检查进行数组的访问。在对Java源代码文件进行编译时,所有类型的转换都需要进行合法性检查,但这些检查只能保证检测出不符合语言规范的恶意攻击,有着一定的局限性,字节码校验很好地解决了这个局限。符合程序语言规范的编译器能保证源代码的合法性,但恶意的攻击则可能将编译器进行更改,从而产生不符合安全规范的字节码。而字节码校验存在的目的就是检查这些被篡改的编译器编译的代码,确保字节码的格式正确合法。从而保证在解释器解释为本地系统方法并执行时,不出现伪造指针、栈溢出且违反访问限制,保证访问对象的正确性以及执行方法使用正确的类型、数量的参数调用。

第二,在Java虚拟机中,类加载器会加载class文件以及加载原始API class文件,同时负责将应用程序需要的类进行链接和初始化。在加载字节码时会对其进行字节码验证,确保这些装入的字节码没有伪造指针,没有违反访问限制以及访问对象正确。这个过程对应用程序的执行代码安全性上关系重大。由于类加载器的重要性,因此Java的程序语言中有一些措施在对其进行防护,主要有两个方面的内容,一方面想要在Java虚拟机中创建一个新类或安装一个新的加载器,需要具备特殊的权限。另一方面,所有新安装的类加载器需要授权给父加载器,以此确保以前加载的类不会被恶意代码篡改,尤其是Java API类。这是Java安全机制的核心类。

第三,在Java虚拟机中还有一个“沙箱”——安全管理器。这个沙箱起到的作用就是将本地资源与Java虚拟机中资源进行隔离,防止虚拟机中恶意代码破坏本地操作系统或应用程序。这个沙箱体系是Java开发平台最大的优势和特点之一,其安全策略为不同的代码单元制定出细致的访问控制权限,并且授予给代码。

第四,在新版本Java开发工具中,访问控制器替换了安全管理器,执掌Java的安全策略,比安全管理器更加灵活,安全策略更加丰富多样,主要有三种表现形式,其一,在当前有小的安全策略条件下,有权决定是否访问系统关键资源。其二,将代码进行标记,使其特权化,并对后续的访问产生影响。其三,以快照的形式获得当前调用的上下文,并进行保存,从而为不同的上下文制定出不同的访问权限。

2.3 Java的API功能

Java的API功能包括认证、JAAS(授权服务)、JSSE(Java安全套接字扩展)以及JCE(Java加密扩展)等。Java开发平台在内置安全策略的基础上通过API功能为开发人员提供总体性的安全解决方案。

第一,认证与授权。Java开发平台的API功能提供的身份认证组件,能够准确地识别当前执行各种类型代码的用户,包括应用程序、applet以及bean。JAAS为现有的安全策略进行了有效的补充,为敏感任务的指令代码的执行制定一些方法进行限制,用户与任务起源对此具有决定性的影响。Java开发平台允许JAAS进行嵌入式执行方案,这使得JAAS与Java内置安全策略的底层认证与授权独立开来,从而在不修改程序本身的基础上,为新的认证与授权技术提供有效的途径。

3 结语

Java开发平台的程序语言相比C、C++等独具特色包括安全性、跨平台性、程序强壮性等等,优势是巨大的,这也是Java开发平台流行于世的主要因素。目前,利用Java开发平台进行程序开发,在各个领域被应用,这时研究Java开发平台的安全性意义重大。Java的体系结构为其安全性提供了极其有力的支持,再通过内置的底层安全策略(编译器、字节码校验、类加载器)以及外置扩展包(JCE、JSSE、JAAS)为开发者提供更加丰富的安全方案。因此深入研究Java开发平台的安全性,并采用适当的方法进行使用,能够对系统及信息的安全性提供十分巨大的帮助,将代价与风险降低。但是电子信息技术的不断发展,给Java开发平台的安全性提出全新的要求,以保证信息的安全,防止类似“斯诺登”事件的情况再次发生,这就要求Java开发平台的安全框架进行不断的完善与发展。

参考文献:

[1] 王海,于佳.Java开发工具分析与研究[J].吉林化工学院学报,2016(3):67-70.

[2] 文其瑞.基于Java EE应用程序的Web服务安全性分析[J].电子制作,2013(16):152.

[3] 赵争东.基于Java的数据库应用框架的研究设计和探索[J].信息系统工程,2015(7):79+81.

猜你喜欢

安全性体系
构建体系,举一反三
米氮平治疗老年失眠伴抑郁症的疗效及安全性
探索自由贸易账户体系创新应用
ApplePay横空出世 安全性遭受质疑 拿什么保护你,我的苹果支付?
Imagination发布可实现下一代SoC安全性的OmniShield技术
“三位一体”德育教育体系评说