Java|Java安全API简介

Java|Java安全API简介

文章图片


安全性是应用程序开发中最重要的部分之一 。 Java 语言通过提供许多使应用程序安全的选项和特性 , 使开发安全应用程序变得容易 。 因为这是一个很大的话题 , 所以本文将涉及 Java 平台中可用的安全特性和 API 的几个关键方面 。

概述
Java 平台从一开始就在构建时牢记安全性 。 该语言的类型安全属性和自动垃圾收集表明 Java 架构试图从其核心吸收安全特性 。
近年来 , 安全一直是重点 。 例如 , 现代浏览器正在努力限制或减少对 Java、Silverlight 和 Flash 等插件的支持 , 因为它们可能被滥用以将恶作剧代码合并到一个看起来无害的插件中 。 尽管 Java 环境很干净 , 但小程序的本质是它从公共网络下载不受信任的代码 。 这可能是一个重大的安全漏洞 。 此外 , 浏览器世界在过去几年中发生了巨大变化 。 对 Applet 的绝对需求几乎已经过时 。 也许这一点以及主要是日益增加的安全问题使得 Applet 从 Java 9 中被弃用 。
Java 安全框架
Java 安全服务已经扩展并包括大量应用程序编程接口 (API)、工具、许多安全算法实现、机制和协议 。 这为开发安全应用程序并相应地管理它们提供了一个综合环境 。

Java 安全 API 的范围很广 。 开发安全应用程序的基础在于加密和公钥基础设施 (PKI) 接口、多种可互操作的通用算法实现以及其他安全服务 。 有用于执行身份验证和访问控制的接口 。 这使应用程序能够防止对受保护资源的未经授权的访问 。
语言安全
首先 , 语言本身的构建考虑了将安全性融入其核心 。 最简单的例子可能是类型安全的结合 。 类型安全意味着程序在运行时对内存的访问受到限制 。 这是通过仅将内存与 Java 对象相关联来实现的 。 对象有一个对应的类来定义它的行为;这确保了程序只能根据定义的行为对其进行操作 。 这个想法与动态类型检查产生了共鸣 , 但 Java 也尽可能地结合了复杂的静态类型检查 , 以克服其动态对应物的限制 。 例如 , 字节码验证器是一种有效的静态类型检查器 , 用于在编译时发现任何类型的错误并主动向开发人员报告 。 字节码验证器通过符合 Java 语言规范来确保执行合法的字节码 。 除此之外 , 它还检查内存违规、堆栈下溢/溢出、正确的类型转换等 。 除此之外 , 还有诸如 private、protected 和 public 之类的修饰符来声明受限访问 。
安全提供商
这些服务充当安全提供者 。 它们通过标准接口插入 Java 平台时 , 使应用程序可以轻松获得安全服务 。 这种机制的优点是开发人员不必了解复杂的细节 , 而是可以专注于将安全功能集成到应用程序中 。 这个想法被封装在名为 java.security.Provider 的抽象类中 。 安全服务是通过Provider提供的getInstance()方法获得的 。 可以配置许多提供程序 , 其中每个提供程序都在安装它的每个运行时中配置了名称和版本号 。
密码学
Java 加密 API 分布在两个包中:java.security 和 javax.crypto 。 Java 通过实现多种加密算法提供了种类繁多的加密服务 。 其中一些如下:
java.security.MessageDigest:此类提供单向哈希函数的实现 , 该函数采用任意大小的数据并输出固定长度的哈希值 。 该算法被命名为 SHA-1 或 SHA-256 。
java.security.Signature:此类用于提供数字签名算法的功能 , 例如 DSA、RSA 或 DSA 算法 , 使用 SHA-256 消息摘要算法 。 数字签名特别用于确保数字数据的完整性和真实性 。
java.security.SecureRandom:该类提供了生成加密强随机数的功能 。