Java安全技术精编版

上传人:ahu****ng1 文档编号:145294219 上传时间:2020-09-18 格式:PPTX 页数:41 大小:452.65KB
返回 下载 相关 举报
Java安全技术精编版_第1页
第1页 / 共41页
Java安全技术精编版_第2页
第2页 / 共41页
Java安全技术精编版_第3页
第3页 / 共41页
Java安全技术精编版_第4页
第4页 / 共41页
Java安全技术精编版_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《Java安全技术精编版》由会员分享,可在线阅读,更多相关《Java安全技术精编版(41页珍藏版)》请在金锄头文库上搜索。

1、第16章 Java,主要内容,16.1 安全基本知识 16.2 Java的安全模型 16.3 Java的密码学结构,16.1 安全基本知识,攻击,保护 密码学 ,机密性 ,认证 ,证书 完整性 ,认可性 审计和日志 ,安全策略和访问控制,主要内容,16.1 安全基本知识 16.2 Java的安全模型 16.3 Java的密码学结构,16.2 Java的安全模型,安全模型的演化 Java2 安全模型 Java2的安全划分 应用程序安全性 小程序安全性 J2SDK安全工具 Java小程序的安全部署,最初安全模型为沙箱模型,为从开放的网络中获取的非信任代码的提供了一个受限制的运行环境。沙箱模型的实质

2、是本地代码对重要的系统资源(如文件系统)有全部的访问权限,而下载的远程代码(例如Applet)则不被信任并且仅能访问沙箱里提供的有限资源,JDK 1.1安全模型,使用数字签名服务,可以用与 Java 编写的本地程序类似的方式对待可信的 Applet,JDK1.2中的新安全体系结构,ProtectionDomain是在策略数据库中指定的,授予 CodeSource 的 Permission 的聚合体。通过 ClassLoader 装入到 JVM 的每个类文件被分配给一个ProtectionDomain。,Java2 安全模型,Java2 安全模型,Java 安全主要建立在 Java 运行时环境的

3、三个方面:ByteCode Verifier(字节码验证器)、Security Manager(安全管理器)以及 ClassLoader(类装入器)。 代码验证(Bytecode Verifier) 确保所下载的代码被恰当地格式化,字节码(“Java 虚拟机”指令)没有违反语言或虚拟机的安全限制(如,无非法数据转换),没有执行指针寻址,内部堆栈不能溢出或下溢,以及字节码指令将拥有正确的类型参数。,安全管理器(SecurityManager),SecurityManager 在尝试执行文件 I/O 和网络 I/O、创建新的 ClassLoader、操作线程或线程组、启动底层平台(操作系统)上的进

4、程、终止“Java 虚拟机”、将非 Java 库(本机代码)装入到 JVM、完成某种类型的系统操作以及将某种类型的类装入到 JVM 中时激发运行时访问控制机制。 例如,Java Applet 沙箱严格地将所下载的 Applet 约束到被认为是比较安全的有限的运行环境中。,权限(Permission),一个权限允许代码执行的一个特定的操作,权限可以是特别具体的,也可以是一般化的。 一个权限由三个部分组成:类型,名称和操作。类型是必须的,它是实现了Permission接口的特定的类 permission java.security.AllPermission; permission java.la

5、ng.RuntimePermission stopThread; permission java.io. /tmp/foo, read;,代码源(Code Sources),代码源包含类的从哪里装载的位置信息和对类签名信息。一般情况下,这个位置被表示成一个URL。如果代码被签名,那么代码源里面包含了关于签名者的信息。类可以基于代码源被赋予一定的权限。 保护域(Protection Domains) 是赋予代码源的权限的集合。可以通过策略文件定义。,策略文件(Policy files),策略文件是一个控制沙箱的管理元素。 一个策略文件可以包含一个或者多个条目来定义一个保护域。 每个条目是赋予代码

6、源的权限声明。 一般有两个策略文件,一个全局策略文件,一个用户相关策略文件。 全局策略文件影响Java虚拟机种的所有的实例。 策略文件是一个文本文件,可以直接进行编辑。也可以用Java提供的编辑工具policyTool进行编辑。,密钥库(Keystores),通过代码签名可以赋予代码更多的执行自由度。 如果你确信正在执行的代码来自一个可信的组织,你可以允许它访问本地磁盘文件,或者使用打印机等。 被签名的代码依赖于公钥证书,证书被保存在密钥库中。开发者可以使用密钥库中的证书对代码进行签名; 一般用户或者系统管理员可以在执行已签名的代码时参考密钥库发现是谁的签名。,访问控制器(AccessCont

7、roller),访问关键系统资源时,是否允许或者拒绝,具体结果决定于策略文件的配置。 把一段代码标记为具有一定的特权,影响后续的访问判断。 获取当前调用上下文的一个快照,来自不同上下文的访问控制判断可以参照被保存的上下文。 做特殊安全检查,Java2的策略配置文件,SecurityManager security = System.getSecurityManager();if (security != null) security. checkPermission (Permission perm ); 如果这个请求被允许,checkPermission不返回任何值;如果被拒绝,抛出异常Se

8、curityException。,grant signedBy signer_names, codeBase URL permission permission_class_name target_name, action, signedBy signer_names; ;,应用程序安全性,在不使用SecurityManager的情况下 使用SecurityManager的情况 修改策略配置文件,小应用程序安全性,通过程序说明 在命令行中用AppletViewer执行 Appletviewer write,J2SDK安全工具,keytool 管理密钥库和证书 jarsigner 产生和验证Ja

9、va签名 policytool 图形化的方式管理策略文件。,Keytool,1)创建公/私钥对; 2)发出证书请求到认证权威(CA) 3)从认证权威导入证书回复 4)指明属于其他组织的公钥是受信任的。 Keytool目前能够处理符合X.509标准的证书。JSSE( Java Secure Socket Extension,JSSE ) 1.0.2以后的版本可以支持pkcs12。,Keytool参数,KeyTool应用,D:keytool -genkey -alias javafan -keyalg rsa -validity 750 输入keystore密码: keystore 您的名字与姓氏

10、是什么? Unknown: JavaFan 您的组织单位名称是什么? Unknown: Computer Science 您的组织名称是什么? Unknown: Chongqing University 您所在的城市或区域名称是什么? Unknown: Chongqing 您所在的州或省份名称是什么? Unknown: Chongqing 该单位的两字母国家代码是什么 Unknown: CN CN=JavaFan, OU=Computer Science, O=Chongqing University, L=Chongqing , ST=Chon gqing, C=CN 正确吗? 否: 是 输

11、入的主密码 (如果和 keystore 密码相同,按回车):,用keytool显示证书的内容,D: keytool -v -printcert - Owner: CN=JavaFan, OU=Computer Science, O=Chongqing University, L=Chongqing ,ST=Chongqing, C=CN 发照者: CN=JavaFan, OU=Computer Science, O=Chongqing University, L=Chongqing , ST=Chongqing, C=CN 序号: 43030437 有效期间: Wed Aug 17 17:32

12、:39 CST 2005 至: Thu Sep 06 17:32:39 CST 2007 认证指纹: MD5: CB:AE:97:24:A9:93:4B:34:E2:3B:95:95:70:E7:70:D5 SHA1: E3:32:0C:68:24:34:CB:6E:02:BF:ED:E6:D8:C0:29:AE:66:5C:20:DD,jarsigner,Jarsigner用于给打包后的Java程序签名,或者验证签名。Jarsigner可以在签名或者验证签名时,访问由keytool创建的密钥库。,policytool,Java运行时环境的安全配置文件java.home/lib/securit

13、y/java.security(java.home指安装Java运行时环境的目录)中包括两个策略文件:java.home/lib/security/java.policy 和 user.home/.java.policy(user.home指用户主目录)。PolicyTool缺省修改第二个文件。,Java小程序的安全部署,SimpleScannerApplet程序检查某个主机上的TCP端口是否开放,比如用于WWW服务的80端口,用于SMTP服务的25端口等。,程序运行界面,制作和部署安全小程序步骤,编制小程序SimpleScannerApplet 编写Html文件scanner.html 把程

14、序打包成Jar文件 获取并安装一个支持RSA的签名证书。 用该证书对Jar文件进行签名 用sun的Html Convert转换scanner.html 部署转换后的html文件和已经签名的jar文件 见程序,主要内容,16.1 安全基本知识 16.2 Java的安全模型 16.3 Java的密码学结构,16.3 Java的密码学结构,16.3.1基本概念 16.3.2核心类 16.3.3消息摘要 16.3.4数字签名 16.3.5数据加密/解密,16.3.1基本概念,Java 密码学结构设计遵循两个原则: (1) 算法的独立性和可靠性;(2) 实现的独立性和相互作用性。 Java 2 中主要的

15、密码学服务有以下几种: 数字签名、消息摘要、加密/解密 密钥工厂 密钥库创建与密钥管理 算法参数产生、管理 证书工厂,JDK5.0提供的密码学服务,可以通过修改java.home/lib/security/java.security文件安装密码学服务提供者。缺省情况下,Java运行时环境已经安装了下面的提供者: security.provider.1=sun.security.provider.Sun security.provider.2=sun.security.rsa.SunRsaSign security.provider.3=.ssl.internal.ssl.Provider se

16、curity.provider.4=com.sun.crypto.provider.SunJCE security.provider.5=sun.security.jgss.SunProvider security.provider.6=com.sun.security.sasl.Provider 见程序,测试程序,import java.security.Provider; import java.security.Security; public class GetProviderInfo public static void main(String args) Provider plist = Security.getProviders(); for (int i = 0; i plist.length; i+) System.out.println( + (i + 1) + -Provider name: + plisti.getName(); System.out.println(Provider info: + plisti.getInfo()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号