Java安全技术PPT课件.ppt_第1页
Java安全技术PPT课件.ppt_第2页
Java安全技术PPT课件.ppt_第3页
Java安全技术PPT课件.ppt_第4页
Java安全技术PPT课件.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章Java安全技术 10 1简介10 2安全限制和许可10 3安全策略 Policy 10 4辅助工具10 5签名及发布的例子习题 1 10 1简介 Java是网络上使用的编程语言 安全性是非常重要的 特别是Java平台的安全以及Java技术部署带来的安全问题 尤其值得认真考虑 Java中的安全包括两个方面 1 提供安全且易于构建的Java平台 能够以安全模式运行Java实现的应用程序 2 提供用于编程语言的安全工具和服务 实现较广泛的安全 2 Java平台提供的原始安全模型称为沙箱模型 JDK1 0 该模型提供较窄环境 沙箱来运行没有得到信任的代码 在沙箱模型中允许得到信任的本地代码访问重要资源 而没有经过信任的远程代码只能访问沙箱内的很少部分资源 在JDK1 1中引入签名Applet的概念 如果签名的密钥由接收Applet的客户端认为是可信任的 那么这个经过正确数字签名的Applet就可以当作可信任本地代码访问重要资源 这里签名Applet和它的签名以JAR格式传送 随着发展 在原来沙箱模型的基础上引入新的安全体系 形成Java2平台安全模型如图10 1所示 从图10 1中可以看出 不管本地还是远程 签名还是未签名的代码都统一到类加载器处 咨询安全策略 然后决定代码能够访问的资源 Java2安全平台模型较之以前有了很大的改进 其主要特点如下 3 1 细粒度的访问控制 2 易于配置的安全策略 3 易于扩展的访问控制结构 4 安全检查扩展到所有Java程序 包括应用程序和Applet 4 图10 1Java2平台安全模型 5 图10 1中的多个沙箱模型可以看作有固定边界的保护域 所谓保护域是指一个对象集合 这些对象可以由安全策略中定义的一条规则直接访问 保护域分为系统域和应用程序域 受保护的资源 像文件系统 网络设施以及屏幕和键盘 只允许系统域进行访问 而应用程序域可以通过授权许可访问受保护资源 类加载器将本地或远程代码 Applet 载入的同时 策略文件给出域的划分和不同代码对不同域访问权限的许可 载入的类就根据域划分和权限许可来访问相应的域资源 图10 2为运行中类到域再到许可的映射 6 图10 2类到域再到许可的映射 7 10 2安全限制和许可 本地的代码类访问系统资源时通常不会受到太大的限制 所以本章主要讨论从服务器下载到客户端的远程代码Applet访问客户端资源的情况 Applet访问客户端资源时 由于Java内嵌的平台安全性机制受到较大的限制 通常表现在无法读写客户端的文件 无法采集客户端音频 例如 当Applet实现的是客户端和服务器端进行语音聊天时 客户端采集音频就会受到限制 还有无法启动客户端的Socket进行传输等 下面看一个文件访问受到安全限制的例子 8 例10 1 编写一个用来读取客户端文件的Applet 客户端的文件路径及文件名为E a txt 文件内容为 你好 这是客户端的测试文件 如图10 3右部分所示 将读出的文件内容显示在文本区域内 如果访问出错 异常信息也显示在文本区域内 程序文件名 AppletSecurity javaimportjava awt importjava awt event importjava applet importjava io publicclassAppletSecurityextendsApplet 9 TextFieldfileNameField TextAreafileArea publicvoidinit LabellblName newLabel 文件名 LabellblContext newLabel 文件内容 fileNameField newTextField 35 fileNameField addActionListener newActionListener publicvoidactionPerformed ActionEvente loadFile fileNameField getText fileArea newTextArea 10 35 10 add lblName add fileNameField add lblContext add fileArea publicvoidloadFile StringfileName try BufferedReaderreader newBufferedReader newFileReader fileName Stringcontext newString 11 while context reader readLine null fileArea append context n reader close catch IOExceptionie fileArea append IO错误 ie getMessage 12 catch SecurityExceptionse fileArea append 安全访问错误 se getMessage 13 程序编写后 编译生成相应的类 将类嵌入HTML文件 从本地服务器加载 在载入Applet的界面上输入文件名E a txt后按回车键 在界面的文本区域内并没有显示相应a txt的内容 只是提示 accessdenied java io FilePermissionE a txtread 表示访问拒绝 如图10 3左部分所示 图10 3Applet访问文件出错显示和客户端文件内容 14 Java安全平台中受到的种种安全限制 在Java中都提供了一一对应的许可 例如对于读 写文件的限制 Java提供了java io FilePermission来许可对客户端文件的读 写等操作 下面看一下这些许可类 许可类代表对系统资源的访问权限 Java security permission类是抽象类 划分为多个子类来代表特定的访问 而不同的许可类属于不同的包 如FilePermission类属于java io包 而SocketPermission类属于包 目前Java系统内嵌的主要的许可类如表10 1所示 15 表10 1Java内嵌的许可类 16 建立这些类的对象就可以产生许可 例如 下面的代码用来产生许可 读取 tmp目录下名为Hello的文件 filePerm newjava io FilePermission tmp Hello read 17 10 3安全策略 Policy 1 keystore条目keystore用来存放密钥对和相关数字证书 数字证书像X 509证书链用来鉴别相应的公有密钥 keytool工具用来创建和管理keystore Policy配置文件中指定keystore 用来查找grant条目中签名者的公有密钥 如果存在指明签名的grant条目 那么必须存在相应的keystore Keystore条目的格式为 keystore url type 18 其中 1 keystore是保留字 表示keystore条目 2 url指kestore的URL地址 3 type指keystore的类型 用于定义keystore信息的存储和数据格式 以及保护keystore中的私有密钥和keystore完整性算法 通常情况下缺省类型为 JKS 19 2 grant条目policy对象中含有0到多条grant条目 指明远程代码访问特定资源的相关许可 grant条目的格式如下 grantsignedBy name codeBase url Permissionpermission class name target name action name Permissionpermission class name target name action name 20 其中 1 每个grant条目为由name签名且来源于codeBase的类的访问提供一系列许可permission class name 2 grant为保留字 表示一条授权 3 signedBy为保留字 指明签名者 4 name为数字签名的作者名 5 codeBase为保留字 指明代码来源 6 url为指定代码的来源路径 21 7 Permission为保留期 指明许可名字及许可操作 8 permission class name指许可类名 9 target name为受保护资源的名字 如文件目录 10 action name为对受保护资源进行操作的权限 22 例如 下面为两条具体的grant条目 第一条表示允许lihua签名的网址http 192 100 100 43 8080 下的访问代码对temp目录的所有文件有读 写权限 第二条表示对本机java home目录的子目录 lib ext 下的所有代码授予任意访问受保护资源的权限 grantsignedBy lihua codeBase http 192 100 100 43 8080 Permissionjava io FilePermission tmp read wirte grantcodeBase file java home lib ext permissionjava security AllPermission 23 10 4辅助工具 10 4 1密钥和证书管理工具keytool为密钥和证书管理工具 它使得用户可以管理他们自己的公共密钥和私有密钥对以及相关的证书 用于在数字签名中进行数据完整性验证和身份验证 keytool将密钥对和证书存放在keystore中 keystore通常以文件的形式存在 创建keystore时需要为它设置密码 还要为其中的私有密钥设置密码 命令提示符状态下键入不带参数的命令keytool 可以看见它的用法 如图10 4所示 24 图10 4keytool的用法 25 例如 在命令行提示符状态下键入如下命令行 生成UseImage keystore文件 密钥和keystore的密码均为xueliang 显示结果如图10 5所示 keytool genkey aliasUseImage keypassxueliang keystoreUseImage keystore storepassxueliang其中 1 genkey 选项 表示生成新的密钥 2 alias 别名选项 表示紧跟的参数为别名具体值 UseImage 26 3 keypass 密钥的密码选项 表示紧跟的参数为密钥的密码具体值 xueliang 4 keystore 选项 表示紧跟的参数为生成的keysotre文件名称 UseImage keystore 5 storepass keystore密码的选项 表示紧跟的参数为keystore文件的密码具体值 xueliang 27 图10 5生成文件UseImage keystore 28 而要将公共密钥导入证书 则需要键入如下代码 生成UseImage cer证书文件 结果如图10 6所示 keytool export aliasUseImage fileUseImage cer keystoreUseImage keystore storepassxueliang 图10 6生成证书文件UseImage cer 29 10 4 2签名和校验工具jarsigner用来对JAR文件进行数字签名和校验 这个过程基于keytool生成的keystore 在命令提示符状态下键入jarsigner后按回车键 可以看见用法及选项说明 如图10 7所示 图10 7jarsigner工具的用法及选项 30 常用的签名格式为 jarsigner keystorekeysotre file storepasskeystore passwordjar filealias其中 1 keystore file为keytool生成的keystore文件 2 keystore password为keystore的密码 3 jar file文件为档案文件而且只能为档案文件 例如 jarcvfUseImage jarUseImage classindex 01 gif 生成JAR文件jarsigner keystoreUseImage keystore storepassxueliangUseImage jarUseImage 进行签名 31 10 4 3PolicyToolPolicytool是图形用户界面工具 可帮助用户指定 生成 编辑一个安全策略 命令提示符状态下键入PolicyTool后按回车键 就可调出此图形界面 根据界面指示 可以实现一个policy文件的各种操作 下面来看一下系统默认的policy文件 将D j2sdk1 4 0 01 jre lib security目录下的java policy文件拷贝到E Work Java sample目录下 在命令行状态运行命令policytool 弹出 规则工具 对话框 单击 文件 菜单中的 打开 项 选择java policy文件并打开 如图10 8所示 从图10 8中可以看出允许两个CodeBase来源的远程代码 32 图10 8使用policytool工具打开java policy文件 33 选中第一个规则项目 CodeBase file java home lib ext 单击 编辑规则项目 按钮 弹出一个 规则项目 的窗口 如图10 9所示 可以看见签名项 SignedBy 为空 而权限一栏中为permissionjava security AllPermission 表示允许这个规则项目下的所有远程代码对系统的所有资源进行访问 34 图10 9全部授权的权限列表 35 选中第二个规则项目 CodeBase 单击 编辑规则项目 按钮 弹出如图10 10所示窗口 权限列表中可以看出对普通属性都有读的权限 这是客户端对所有远程代码的默认的安全限制列表 36 图10 10所有远程代码访问的默认权限列表 37 这个默认的java policy文件对应的源文件如下 StandardextensionsgetallpermissionsbydefaultgrantcodeBase file java home lib ext permissionjava security AllPermission defaultpermissionsgrantedtoalldomains 38 grant Allowsanythreadtostopitselfusingthejava lang Thread stop methodthattakesnoargument Notethatthispermissionisgrantedbydefaultonlytoremain backwardscompatible Itisstronglyrecommendedthatyoueitherremovethispermission fromthispolicyfileorfurtherrestrictittocodesources thatyouspecify becauseThread stop ispotentiallyunsafe 39 See permissionjava lang RuntimePermission stopThread allowsanyonetolistenonun privilegedports SocketPermission localhost 1024 listen standard properiesthatcanbereadbyanyonepermissionjava util PropertyPermission java version read permissionjava util PropertyPermission java vendor read permissionjava util PropertyPermission java vendor url read 40 permissionjava util PropertyPermission java class version read permissionjava util PropertyPermission os name read permissionjava util PropertyPermission os version read permissionjava util PropertyPermission os arch read permissionjava util PropertyPermission file separator read permissionjava util PropertyPermission path separator read permissionjava util PropertyPermission line separator read 41 permissionjava util PropertyPermission java specification version read permissionjava util PropertyPermission java specification vendor read permissionjava util PropertyPermission java specification name read permissionjava util PropertyPermission java vm specification version read permissionjava util PropertyPermission java vm specification vendor read permissionjava util PropertyPermission java vm specification name read permissionjava util PropertyPermission java vm version read permissionjava util PropertyPermission java vm vendor read permissionjava util PropertyPermission java vm name read 42 10 5签名及发布的例子 10 5 1步骤在命令提示符状态下进入路径D ApacheTomcat4 0 webapps ROOT user 所有操作都在服务器路径下操作 也可以在普通路径下操作 完成后将一系列文件配置到服务器端 本书作者使用前者 在user目录下建立AppletSecurity java文件 源代码即为例10 1 编译后生成三个类 AppletSecurity class AppletSecurity 1 class和AppletSe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论