JAVA应用程序的安全性探究

2013-08-15 00:44天津工业大学计算机科学与软件学院
电子世界 2013年8期
关键词:安全策略访问控制应用程序

天津工业大学计算机科学与软件学院 王 辉

随着Java技术的发展,安全技术也在各方面进行了完善和改进。Java安全性不是自运行的,是通过安全管理器来实现安全策略,这个安全管理器没有自动安装在应用程序中。安全策略是基于代码来源的授权,它是根据代码的来源来设置代码可以有哪些权限、可以访问用户的哪些资源,从而保护代码执行者的安全性。Java安全性是整个Java语言的有机组成部分,Java平台本身具有内置且一致的安全特性,如果能够恰当地使用,它可以很好地控制每一个Java应用程序。

1.JAVA安全机制

Java的安全模型是由安全策略、访问许可、保护域、访问控制检查、权限操作以及类加载和解析等部分组成。安全策略和访问许可定义了哪些动作是允许的,而保护域和访问控制检查则提供了执行的功能,权限操作、类加载和解析则对整个保护机制是很有帮助的。

1.1 安全策略

Java运行时环境的安全行为由安全策略来指定,安全策略是一个典型的访问控制矩阵,即什么样的系统资源、用哪种形式、在哪些环境下可以被访问。一个安全策略是从描述运行代码的一系列特征到代码允许的访问许可权限之间的映射。在Java的安全体系结构中将保护域分为系统保护域与应用保护域。前者对文件系统或网络套接字(socket)等系统资源的访问加以控制。而后者对各种组件或应用程序某部分的访问进行控制,它是针对具体应用程序的。应用保护域使用应用安全(例如,使用AS包或J2EE的容器管理安全机制)增强了当前的安全策略。然而,应用安全通常使用定制的权限来限制对特权代码的访问。

1.2 Java认证和授权服务(JAAS)

Java2依赖于安全策略给运行代码授予许可权限,以代码为中心的访问控制方式不同于依赖于代码的各种特性的传统安全措施,它是很合理的。然而,Java技术被广泛应用于多用户环境中,必须与不同的用户打交道,而且还要基于其身份授予这些用户不同的许可。Java认证和授权服务(JAAS)可以为用户鉴别和权限分配提供一个标准的编程接口,它被完全集成在J2SE1.4中。这样应用程序可以提供以代码为中心的访问控制,或者以用户为中心的访问控制,以及可以是两者的结合。有了JAAS之后,Java就能完全提供两个重要的服务:认证(检查用户的合法性)、授权(确认合法用户执行的任务)。认证是要确定谁正在运行代码,不管代码是如何运行的。授权是确定用户执行某些动作的权限。在JAAS之前,Java安全先检查代码来源和谁做的签名,正确后再执行JAAS,从而增强了Java的安全性。

2.JAVA缺陷攻击和保护

由于Java程序可运行在多个平台上,将安全建立在应用级上常常比建立在操作系统上的系统级安全更有效。在Java应用级别上,有很多技术可以用于保护系统不受攻击,在对应用程序采取好基本的安全措施后,应用程序就不那么好对付了,就可以阻止或预防除了刻意黑客之外的所有攻击。

2.1 保护本地存储数据

在本地存储数据的独立应用程序存在一个问题:运行应用程序的用户通常需要读取和写入数据文件,这就意味着他们可以不通过应用程序就可以读取,修改数据。如何防止这种类型的攻击?最简单的办法是将信息存储在更安全的地方,例如放在远程服务器的数据库中。但是,如果一定要求在本地存储信息,又怎么办呢?幸运的是Java提供了强有力的技术。使用JCE可以容易地加密数据,然后将它放到文件中。由于对称密钥算法比非对称密钥算法快几倍,所以加密时一般采用对称密钥,然而,对称密钥却缺乏公/私钥结合的安全性。所以,在生成加密密钥时,为了安全起见,在密钥中加入口令和盐。加密时输入口令,口令可以由使用者自己确定,解密时只有输入口令才能够得到明文。盐是一个无关的数据序列,它被添加到将要加密的数据中,解密时先将它从明文中去掉。这样就能防止黑客进行加密逆向处理。

2.2 防止软件盗版

尽管确信系统的各种安全漏洞都堵死了,但它仍然是易受攻击的,即代码滥用的危险。即使没有应用程序源代码,对于一个技术高超的人来说,也可以采用与开发者原意不同的方式来使用应用程序。因此,必须采用一种机制来防止对软件的盗版,防止无授权的方式复制并使用软件。虽然现实中没有完善的防范措施来对抗软件盗版,但是可通过巧妙地使用JCE,让黑客难于攻击而远离应用程序。其中一个方法是开发一个全面的软件授权策略。以前,这方面的很多机制是使用哈希码或简单的加密方案来传输或确认授权信息。在Java应用中,这些技术仍然可用。此时我们假定可以向系统所有的合法用户传递一个专门的“钥”,当解密时,它包含了增强授权方法的所有必要信息。

2.3 RMI的危险

RMI建立在Java语言的许多特性之上,它是一种设计非常简单并且灵活的技术,可以实现跨网络的方法调用,但RMI包含默认高级安全机制。然后,通过网络上的客户应用调用远程对象的方法,就会打开很多的安全漏洞。RMI使用明文实现跨网络的方法调用,但是没有进行任何认证。这使得应用暴露给很多可能的危险者,使其允许未认证用户访问他们不应该访问的信息,执行不应该执行的方法调用。为了降低风险,所有使用RMI的程序都必须安装安全管理器,或者除了本地类之外,不能下载作为参数接收的对象类、返回值类、远程方法调用的异常类,这个限制确保下载代码的操作经过一系列安全检查。

2.4 EJB安全

在J2EE中EJB是提供的最好特性之一,它有多种不同类型的EJB可以用于实现组件。实体Bean代表持续数据,会话Bean代表与客户端的一次会话,用于为客户端会话管理业务处理,消息驱动Bean允许EJB组件处理异步消息。如果只使用容器提供的标准J2EE安全服务,EJB是最容易保护的一种J2EE组件类型。EJB实现允许容器增强安全性,使用这种安全机制是对于EJB的最好实践。没有这些安全机制,任何远程用户(包括可能的攻击者),只要能够访问EJB服务器并且知道关于远程部署的Bean(不声明为本地Bean)的接口信息,就可以访问服务器并执行远程方法。

3.结束语

安全本身是蕴涵矛盾的问题,任何保证安全的措施其实也是一道无形的屏障,会带来一定的运行效率的损失,同时在开发上也需要加入更加完备的考虑。Java技术有许多安全特性,而Java平台通过自身基础来实现一个可靠的平台。如果没有Java语言自身提供的安全性,那么Java2的安全模型是不可能实现可信赖特征的。Java语言规范了类型安全和引用完整的语义,但是如果没有Java虚拟机提供的执行和保证,Java语言仍然是不完备的。因此,通过采用各种各样的安全子系统,创建了一个强大的安全体系是十分必要的。

[1]陈磊.Java的安全机制研究与分析[J].电脑知识与技术(学术交流),2007(12).

[2]房伟.基于J2ME平台的移动应用系统的安全性研究[D].大连交通大学,2010.

猜你喜欢
安全策略访问控制应用程序
基于飞行疲劳角度探究民航飞行员飞行安全策略
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
一种防火墙安全策略冲突检测方法*
浅析涉密信息系统安全策略
ONVIF的全新主张:一致性及最访问控制的Profile A
动态自适应访问控制模型
浅析云计算环境下等级保护访问控制测评技术
大数据平台访问控制方法的设计与实现
如何加强农村食盐消费安全策略