深入理解Java安全模型与密码学结构

需积分: 10 9 下载量 44 浏览量 更新于2024-07-30 收藏 180KB PPT 举报
"深入理解Java安全技术,包括基本的安全知识、Java的安全模型以及其密码学结构。" Java安全技术是确保应用程序在执行时免受恶意代码侵害的重要领域。它涉及到多种概念,如攻击防御、密码学原理、认证机制、数据完整性、认可性、审计和日志记录、安全策略以及访问控制等。 16.1 安全基本知识 安全基本知识涵盖了攻击和保护的概念。攻击可能包括病毒、木马、拒绝服务攻击等,而保护则涉及构建防线以防止这些攻击。密码学是保障信息安全的关键,它涉及到加密算法来确保数据的机密性,以及通过数字签名和证书进行身份认证。完整性指的是数据未被篡改的状态,而认可性则确认信息来源的真实性。此外,审计和日志记录用于追踪活动,安全策略和访问控制定义了哪些用户或代码可以访问哪些资源。 16.2 Java的安全模型 Java的安全模型经历了多次演进,从最初的沙箱模型发展到Java 2安全模型。沙箱模型将非信任代码限制在一个受控环境中,本地代码拥有全部权限,而远程代码(如Applet)只能访问有限的资源。在JDK 1.1中,引入了数字签名,使得可信的Applet可以像本地程序一样处理。到了JDK 1.2,引入了Protection Domain的概念,这是在策略数据库中指定的,它根据CodeSource授予特定的权限。每个由ClassLoader加载到JVM的类都会被分配一个Protection Domain,通过AccessController进行权限检查。 Java 2安全模型进一步细化,包括Bootstrap ClassLoader、System ClassLoader和User ClassLoader,以及Bytecode Verifier、Security Manager和Protection Domains等组件。这些组件共同协作,确保代码在执行时符合预设的安全策略,并阻止未经授权的访问。 16.3 Java的密码学结构 Java提供了强大的密码学支持,包括对称加密、非对称加密、哈希函数和消息认证码(MAC)等。Java Cryptography Architecture (JCA)和Java Cryptography Extension (JCE)提供了加密算法接口和实现,允许开发者使用各种加密技术来保护数据。此外,Java还支持X.509证书和证书路径验证,以实现公钥基础设施(PKI)。 Java安全技术是Java平台的一个核心组成部分,它通过严格的访问控制、加密机制和动态的权限管理,为开发安全的应用程序提供了坚实的基础。理解和掌握这些概念对于任何Java开发者来说都是至关重要的,特别是在今天这个网络安全威胁日益严重的时代。
2010-09-15 上传
目目目录 前言 第1章 计算机与网络安全基础 1 1.1 密码学与计算机安全 1 1.2 危险和保护 2 1.3 外围防护 3 1.3.1 防火墙 4 1.3.2 仅仅使用外围防护的不足之处 4 1.4 访问控制与安全模型 4 1.4.1 MAC和DAC模型 5 1.4.2 对数据和信息的访问 5 1.4.3 静态和动态模型 6 1.4.4 关于使用安全模型的几点考虑 6 1.5 密码系统的使用 7 1.5.1 单向散列函数 7 1.5.2 对称密码 8 1.5.3 非对称密码 9 1.6 鉴别 9 1.7 移动代码 10 1.8 Java安全性的适用范围 11 第2章 Java语言的基本安全特点 12 2.1 Java语言和平台 12 2.2 基本安全结构 13 2.3 字节代码验证和类型安全 14 2.4 签名应用小程序 15 2.5 关于安全错误及其修复的简要历史 16 第3章 JDK1.2安全结构 19 3.1 起源 19 3.2 为什么需要一个新型的安全结构 19 3.2.1 关于applet的沙盒模型的局限性 19 3.2.2 策略和实施分离的不彻底性 20 3.2.3 安全核查的不易扩展性 20 3.2.4 对本地安装的applet过于信任 20 3.2.5 内部安全机制的脆弱性 21 3.2.6 总结 21 3.3 java.Security.General SecurityException 21 3.4 安全策略 22 3.5 CodeSource 24 3.5.1 测试等同性和利用隐含 25 3.6 许可权层次 26 3.6.1 java.security.Permission 27 3.6.2 许可权集合 28 3.6.3 java.security.Unresolved Permission 29 3.6.4 java.io.FilePermission 31 3.6.5 java.net.SocketPermission 33 3.6.6 java.security.BasicPermission 35 3.6.7 java.util.PropertyPermission 36 3.6.8 java.lang.RuntimePermission 37 3.6.9 java.awt.AWTPermission 38 3.6.10 java.net.NetPermission 38 3.6.11 java.lang.reflect Reflect Permission 39 3.6.12 java.io .Serializable Permission 39 3.6.13 java.security.Security Permission 39 3.6.14 java.security.AllPermission 40 3.6.15 许可权隐含中的隐含 40 3.7 分配许可权 41 3.8 Protection Domain 42 3.9 安全地加载类 44 3.9.1 类加载器的层次 44 3.9.2 java.lang.ClassLoader和授权 46 3.9.3 java.security.SecureClassLoader 49 3.9.4 java.net.URLClassLoader 49 3.9.5 类的路径 50 3.10 java.lang.SecurityManager 51 3.10.1 使用安全管理器的实例 51 3.10.2 JDK1.2中没有改变的API 52 3.10.3 JDK1.2中禁用的方法 53 3.11 java.security.AccessController 56 3.11.1 AceessController的界面设计 57 3.11.2 基础访问控制算法 57 3.11.3 继承方法 59 3.11.4 扩展带有特权操作的基本算法 59 3.11.5 特权操作的三种类型 61 3.11.6 访问控制语境 63 3.11.7 完整的访问控制算法 64 3.11.8 SecurityManager与 AccessController 65 3.11.9 特权操作发展史 66 3.12 小结 67 第4章 安全结