1、类型是必须的,它是实现了Permission接口的特定的类 permission java.security.AllPermission;permission java.lang.RuntimePermission stopThread;permission java.io.FilePermission/tmp/foo,read;,代码源(Code Sources),代码源包含类的从哪里装载的位置信息和对类签名信息。一般情况下,这个位置被表示成一个URL。如果代码被签名,那么代码源里面包含了关于签名者的信息。类可以基于代码源被赋予一定的权限。保护域(Protection Domains)是赋予
2、代码源的权限的集合。可以通过策略文件定义。,策略文件(Policy files),策略文件是一个控制沙箱的管理元素。一个策略文件可以包含一个或者多个条目来定义一个保护域。每个条目是赋予代码源的权限声明。一般有两个策略文件,一个全局策略文件,一个用户相关策略文件。全局策略文件影响Java虚拟机种的所有的实例。策略文件是一个文本文件,可以直接进行编辑。也可以用Java提供的编辑工具policyTool进行编辑。,密钥库(Keystores),通过代码签名可以赋予代码更多的执行自由度。如果你确信正在执行的代码来自一个可信的组织,你可以允许它访问本地磁盘文件,或者使用打印机等。被签名的代码依赖于公钥证
3、书,证书被保存在密钥库中。开发者可以使用密钥库中的证书对代码进行签名;一般用户或者系统管理员可以在执行已签名的代码时参考密钥库发现是谁的签名。,访问控制器(AccessController),访问关键系统资源时,是否允许或者拒绝,具体结果决定于策略文件的配置。把一段代码标记为具有一定的特权,影响后续的访问判断。获取当前调用上下文的一个快照,来自不同上下文的访问控制判断可以参照被保存的上下文。做特殊安全检查,Java2的策略配置文件,SecurityManager security=System.getSecurityManager();if(security!=null)security.ch
4、eckPermission(Permission perm);如果这个请求被允许,checkPermission不返回任何值;如果被拒绝,抛出异常SecurityException。,grant signedBy signer_names,codeBase URL permission permission_class_name target_name,action,signedBy signer_names;,应用程序安全性,在不使用SecurityManager的情况下使用SecurityManager的情况修改策略配置文件,小应用程序安全性,通过程序说明在命令行中用AppletViewe
5、r执行Appletviewer writeFile.html,J2SDK安全工具,keytool 管理密钥库和证书 jarsigner 产生和验证Java签名 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-alia
6、s javafan-keyalg rsa-validity 750输入keystore密码:keystore您的名字与姓氏是什么?Unknown:JavaFan您的组织单位名称是什么?Computer Science您的组织名称是什么?Chongqing University您所在的城市或区域名称是什么?Chongqing您所在的州或省份名称是什么?Chongqing该单位的两字母国家代码是什么 Unknown:CNCN=JavaFan,OU=Computer Science,O=Chongqing University,L=Chongqing,ST=Chongqing,C=CN 正确吗?否:
7、是输入的主密码(如果和 keystore 密码相同,按回车):,用keytool显示证书的内容,D:keytool-v-printcert-file javafan.cerOwner: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:39 CS
8、T 2005 至:Thu Sep 06 17:39 CST 2007认证指纹:MD5:CB:AE:97:24:A9:93:4B:34:E2:3B:95:70:E7:D5 SHA1:E3:0C:68:6E:02:BF:ED:E6:D8:C0:29:66:5C:20:DD,jarsigner,Jarsigner用于给打包后的Java程序签名,或者验证签名。Jarsigner可以在签名或者验证签名时,访问由keytool创建的密钥库。,policytool,Java运行时环境的安全配置文件java.home/lib/security/java.security(java.home指安装Java运行时
9、环境的目录)中包括两个策略文件:java.home/lib/security/java.policy 和 user.home/.java.policy(user.home指用户主目录)。PolicyTool缺省修改第二个文件。,Java小程序的安全部署,SimpleScannerApplet程序检查某个主机上的TCP端口是否开放,比如用于WWW服务的80端口,用于SMTP服务的25端口等。,程序运行界面,制作和部署安全小程序步骤,编制小程序SimpleScannerApplet 编写Html文件scanner.html 把程序打包成Jar文件获取并安装一个支持RSA的签名证书。用该证书对Jar
10、文件进行签名用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 中主要的密码学服务有以下几种:数字签名、消息摘要、加密/解密密钥工厂密钥库创建与密钥管理算法参数产生、管
11、理证书工厂,JDK5.0提供的密码学服务,可以通过修改java.home/lib/security/java.security文件安装密码学服务提供者。缺省情况下,Java运行时环境已经安装了下面的提供者:security.provider.1=sun.security.provider.Sunsecurity.provider.2=sun.security.rsa.SunRsaSignsecurity.provider.3=.ssl.internal.ssl.Providersecurity.provider.4=com.sun.crypto.provider.SunJCEsecurity.
12、provider.5=sun.security.jgss.SunProvidersecurity.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();,16.3.2核心类,Security,Provider MessageDigest类 Signature类 Key,KeyFactory,KeyPair,KeyPairGenerator SecureRandom,16.3.3消息摘要,使用MD5算法产生消息摘要也可以使用
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1