所有提交的电磁系统将被重定向到在线手稿提交系统。作者请直接提交文章在线手稿提交系统各自的杂志。

安全体系结构和验证Java字节码

阿卡纳Bharti Ankit Tyagi,阿布Anand, Rashi克里
  1. 学者,计算机科学与工程系,友好大学大诺伊达,印度
  2. 计算机科学与工程系,讲师友好大学大诺伊达,印度
相关文章Pubmed,谷歌学者

访问更多的相关文章国际期刊的创新在计算机和通信工程的研究

文摘

字节码是一个基于堆栈的java虚拟机指令集,其中包含202条指令,不仅提供建筑独立java,也确保是安全的和便携式的代码。普遍将其发展成一种高度重视的话题,对于工业组织以及学术机构。行业推导的兴趣,因为使用字节码专门为网站和移动设备应用即:手机、地铁卡、信用卡、网上银行等,安全是最重要的。而且它允许动态类加载的结果为这些应用程序包含一个额外的敢正式的方法。同时,穷人structuredness代码和操作数堆栈的普遍存在而且字节码分析面临的挑战。本文综述了理论方面的分雷竞技苹果下载析、转换、验证和安全的Java字节码展示现有的Java字节码验证的方法和提出一些优化。

关键字

类加载器,JVM字节码,JVML SecurityManager, JRE。

介绍

如今,动态语言用java编写的应用程序和其他面向对象的语言来与高水平中间字节码。有两个明确的优势其他程序产生直接的机器代码。首先,它提供了平台独立性,其次,我们可以执行它在目标系统使用不同的指令集来执行特定的任务不使用的系统资源。这种独特的属性提供字节代码的能力是在目标平台上移植。以来,频繁执行的代码的解释非常低效,字节码程序动态编译字节码程序的不同部分转化为代码能够足以在本地主机上执行。这个字节码也验证了在执行之前记住某些边界条件消费者把之前的代码。代码是否打印好,适合运行在java虚拟机或不是代码接收方的义务根据java虚拟机(JVML)规范的语言。这个验证步骤保证编写的代码是安全的,可以没有违反安全运行,可能会导致缓冲区溢出。字节码校验器的另一个主要问题是阻止病毒进入系统,使可疑的系统调用系统为了妥协。这些病毒通常由外国字节码程序,分析了引入安全内置java字节码的分析器。 This bytecode analyzer performs a check on the bytecode before it is executed on the system. Prior studies have been done and experiments been performed by taking certain test cases in order to check the dynamic compilation and verification of Byte code to ensure the safety and correctness of this verification step and how well does the compilation produces local machine code for a particular bytecode fragment.

相关工作

Java虚拟机(JVM)是基于堆栈规范化格式。在堆栈中,多数流行的指令的操作符和操作数堆栈,计算并返回结果推入堆栈。此外,配有一组寄存器也称为局部变量,可以接近使用“加载”和“仓库”指令,将给定的值寄存器堆栈或存储堆栈的顶部在目前的注册。大多数Java编译器需要登记保留源代码级别的本地变量和函数的参数值,还使用临时堆栈的评价结果表达式而架构不支持它。通过方法调用堆栈和寄存器在举行,活动记录的一部分。寄存器的数量和使用内存的堆栈空间方法特别是指定的起点,因此在方法条目,活动记录的大小分配。JVM正常工作的代码应该符合下列条件
正确性的角度来看:参数类型所需的指令完成预期的指导。
没有栈下溢或溢出:在栈下溢,没有参数可以流行的堆栈为空堆栈溢出,参数不能被推到堆栈满即堆栈的大小宣布和堆栈中的参数是相等的。
代码控制:在方法、指令计数器应该永远指向开始启动指令代码,它应该结束点和中间的方法的代码。
寄存器的初始化:无法加载任何方法参数未初始化寄存器所以至少一个负载从一个寄存器应该永远遵循至少一个存储在这个寄存器;我们也可以说,在入学注册不对应方法参数没有初始化。
初始化的对象:当一个对象类的设计,任何一个初始化方法的类应该执行之前,可以使用类对象。
源Java代码:
图像
图像

JVM验证过程

Java最初由程序员编写的源程序编译和转换成对应的字节码(。类文件)表示。如果程序使用不同的编译器编译其他比存储在java JRE声明等代码“敌意”的含义,在执行前应验证的代码字节码校验器。这个步骤可以确保每一个项目,已经从第三方编译器编译没有违反规定的安全生产条件JVM。实际上JVM甚至不看到的代码,直到时间通过字节码校验器进行的一系列测试。字节码校验器只是一个迷你定理验证,验证语言的基本规则是尊重。
它检查代码遵循一定的步骤:
图像
按照上述步骤,Java字节码校验器确保代码被传递到解释器处于健康状态,没有违反安全生产执行。

JAVA安全体系结构

Java安全模型已经通过图3说明观察到Java字节码即。,当地的字节码和不可靠的字节码(applet)必须通过验证器。发生后,调用的类装入器来决定何时以及方式applet可以加载类。除此之外,类装入器也为名称空间创建分区,它确保剩余运行时环境不应受到单一applet。最后运行时的验证是由安全管理器进行检查的所有方法定义了一个新的类加载器或寻求允许I / O或访问网络等(危险的方法)。
图像
Java类加载器
抽象类被称为类加载器定义了类装入器在java编程语言。java类加载到运行时环境的策略可以通过使用类加载器作为一个接口。
类装入器的总体使用:
动态类加载器加载的java类在java虚拟机类装入器的java运行时环境的一部分。
在一个简单的方式,平面名称空间创建的类的类装入器,这是引用的字符串。
类装入器位于图书馆,阅读的内容库,然后加载的类都包含在库
父类加载器避免了applet从调用方法,这是其他类装入器的一部分。正在运行的JVM(即。,the java Runtime environment(JRE) in execution),allows more than one Class Loaders with their own namespace, to get activated at one time, and then JVM groups the classes(e.g. local or global) on the basis of their origin by the allowance of the namespace. This figures out that what are the divisions of Java Runtime Environment (JRE),that can be accessed or can be changed by the applet. Moreover by restricting the namespace the unreliable applets can be prevented from getting access of additional machine resources (e.g. topical files)
Java安全经理
方法在SecurityManager(基本Java安全模型)的一部分被称为检查执行的各种操作不同的编码来区别可靠的和不可靠的代码,此后SecurityManager不允许大多数任务要求不可靠的代码。例示的工作所需的安全政策可以通过使用SecurityManager的子类
SecurityManager提供了一个非常灵活和强大的机制有条件地允许访问资源的安全经理的职责包括:
所有套接字转换是由SecurityManager管理。
保护安全资源(如文件、个人资料等)获得以未经授权的方式访问
防止新的类加载器安装。
维护线程的完整性。
控制访问群类即java包。
之前执行任何类型的危险操作,所有方法的一部分(即基本的Java库。,由甲骨文公司)查阅安全经理确保遵从性。
潜在的可疑后的安全管理器还调用本地操作系统下面工作的JVM。图4说明了这一特性的Java安全经理。
图像

提出了JAVA字节码验证算法

保持在查看现有的java虚拟机字节码验证算法,我们提出以下算法,试图解决现有算法所面临的性能问题。
图像
图像
该算法包含许多优化以减少实习生的迭代次数减少了java字节码的验证过程所花费的时间。

结论和未来的工作

虽然很多之前的工作存在于Java字节码验证的技术然而多数本文调查的工作使我们的启蒙的字节码和验证,以及它是如何执行的控制安全漏洞。在算法的分析我们发现,缩短项目整个工作似乎是最快的时间平均情况项目这一努力似乎会增加一点,但对于较大的项目大小这一努力似乎最长。这个观察明确规定验证时间直接与java程序的大小成正比。承担由于注意密切观察和行为特征的分析,我们得出结论本文通过突出一个很大程度上开放的问题依然存在,字节码验证能否超越基本的类型安全,并初始化属性,和静态建立applet的更高级的特性,比如资源使用和反应性,可以被定义为边界之间的一个小应用程序的运行时间与环境两个交互。

ACKNOWLDGEMENT

我们想表达我们特别感谢我们的导游克里Rashi女士为她的不断支持和指导这项工作没有他们不会看到光明。

引用

  1. 集市´„±n Abadi, Anindya Banerjee,内文Heintze,和乔恩·g . Riecke。一个依赖的核心微积分。在26日研讨会的原则编程语言中,页147 - 160。ACM出版社,1999年。
  2. 斯特凡•弗里德里希•大卫•盆地和Marek Gawkowski。字节码验证模型检测。
  3. 自动推理》杂志上。字节码验证特殊问题(这个问题)。
  4. 伊夫Bertot。形式化验证JVML验证器初始化的一个定理。Proc。计算机辅助验证(CAV 01),体积2102年计算机科学的课堂讲稿,14 - 24页。斯普林格出版社,2001年版。
  5. 帕斯卡Brisset。更小的联合国v´erifieur de Java字节码certifi´e。研讨会在巴黎郊区一口´erieure,巴黎,1998年10月2日,1998年。
  6. 克劳斯Brunnstein。敌对的ActiveX控件。风险论坛,18(82),1997年2月。
  7. Zhiqun陈。智能卡:Java Card技术架构和程序员的指导
  8. Gennady Chugunov Lars一‹šAke Fredlund,和Dilian Gurov。模型检查multi-applet Java卡应用程序。在智能卡研究和先进的应用会议(CARDIS ' 02), 2002年。
  9. 亚历山德罗Coglio。简单的复杂的Java字节码验证技术子例程。在4日ECOOP研讨会正式技术对于java程序,2002年。扩展版本作为茶隼研究所提供技术报告。
  10. 亚历山德罗Coglio。Java字节码验证改善的正式规范。同意- rency和计算:实践和经验,15(2):155 - 179年,2003年。
  11. 理查德·科恩。防守Java虚拟机规范。技术报告,计算逻辑Inc ., 1997。
  12. 斯蒂芬·n·弗洛伊德和约翰·c·米切尔。Java字节码的语言的类型系统和校验。自动推理》杂志上。字节码验证特殊问题(这个问题)。
  13. 斯蒂芬·n·弗洛伊德和约翰·c·米切尔。一个正式的框架java字节码的语言和校验。在面向对象编程系统中,语言和应用程序1999年,页147 - 166。ACM出版社,1999年。
  14. Koushal Kumar Ashwani Kumar验证虚拟机字节码的IJARCSS,卷3,问题3,第130 - 127页,2013年3月。
  15. 泽维尔Leroy Java字节码验证:算法和主要的自动推理》杂志上的特殊问题字节码验证(这个问题)。
  16. 执行概要。安全计算与Java:现在和未来,1998年。
  17. 巩俐。Java安全:现在和不久的将来,IEEE微,17(3):14-19,1997年5月/ 6月。
  18. t . Lindholm和f . Yellin。Java虚拟机规范,addison - wesley, 1996年
全球技术峰会