-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Java
安全体系,博大精深,这个体系按照
Sun
的
Java
安全白皮书,基本上可以分为
5
个部分:
1. Java
平台
Java
语言本身嵌入了安全特性,其中包括编译器
/JVM对强数据类型的支持,自动的内存管理,字节代码的验证机制以及独特的安全类加载方式,这些特性都是SPAN lang=EN-US>Java
语言本身所赋有的,本文不打算作深入的探讨这些基础概念,建议阅读。
2. Java
密码体系
Java
密码
(Cryptography)
体系依赖于
JCA
和
JCE
。
J ava Cryptography Architecture
(JCA)
和
Java Cryptography Extension
(JCE)
是两个非常重要的框架,他们提供了非常简洁通用的
API
接口,接口跟实现是完全分离的,即
Java
开发者可以采用
Sun
的接口
+Sun
的实现的方式,也可以接受
Sun
接口
+BouncyCastle
实现的方式。换言之,这是一种
Provider
方式的体系,如何替换
Provider
可以参考
java.security
文件的配置,非常简单。
JCA
包括了数字签名和消息摘要的
API
,
JCE
扩展了
JCA
,提供了更多的安全
API
,
Java
针对下面一些常用的算法提供了接口和实现:
l
对称的分组加密算法,如
DES, RC2
和
IDEA
l
对称的流加密算法,如
RC4
l
非对称流加密算法,如
RSA
l
基于密码的加密
(PBE)
l
密钥交换协议,如
Diffie-Hellman
l
信息认证码
(MAC)
上面的算法仅仅是密码学领域的冰山一角,但已经能够满足普通应用的安全需求,在算法的层次之上,往往是密码学协议,使用
Java
简单的
Diffie-Hellman
虽然能够满足简单的密钥交换,但是如果节点多于SPAN lang=EN-US style="mso-font-kerning: 0pt">2
个,这个时候,
Diffie-Hellman
便不再适用,此时我们必须使用更复杂
/
更高级的密码协议,成为
Group Diffie-Hellman(GDH)
。因此,初学者不要误认为凭借现有的
Java
密码实现,我们可以做任何事情,在安全领域,事情远远不是我们所想象的那么简单。
3. Java
认证与授权
Java
认证与存取控制模型长成现在这个模样跟
Sun
的宫力有很大关系,这部分涵盖了一个非常重要的部分
JAAS
,
JAAS
是第一个出色地将认证实接口和实现分离的思想,另外,
Java
的存取模型也是一个非常重要的部分,但从
JDK1.2以来并没有什么太大的变化,在
AOP
降临到这个世界之后,
Spring
的拦截方式已经逐渐被人们接受,现在已经很少再看到如何应用
Java
的
Access Manager
的文章了,或者人们已经厌倦了“独”模式,他们似乎更喜欢
Acegi
的方法拦截来控制存取,以致
Charles.gay
经常说要将
JGuard AOP
化,可见,
Java
的存取控制模型已经有点过时了。
4.
安全通信
该部分主要规范了标准安全通讯协议(
SSL
,
TLS
,
Kerberos
,
SASL
等)的
API
和实现。这一节难度比较大,涉猎面广,同时也最能体现了
Java Security
的优势——易用性,扩展性和可移植性,大部分用的最多的是
SSL(IETF
标准化
SSL 3.0
为
TLS 1.0)
,其次是
Kerberos
。
因为微软将
Kerberos
作为整个
Windows
的首个重要的认证协议
(NTLM
已经过时
)
。
Kerberos
至今依然健壮,
MIT
的大师真实卓越非凡,让一个如此简单的协议依然能够独领风骚
30
年而没有做过大的改动,
Kerberos
的思想对我们的影响很大,我觉得现有的很多
SSO
协议都能够看到
Kerberos
思想的影子,尤其是
CAS
协议。
5. PKI
(
Public Key Infrastructure
)体系
Java PKI
规范提供了管理
Key
和证书的
API
,它很好地实现的协议:
l
X.509
规范
l
CRL(
证书撤消列表
)
l
PKCS#11, PKCS#12
l
PKIX (RFC 3280),
l
在线证书状态协议
(OCSP)
PKI
的核心是数字证书,
Java
提供了友好的数字证书对象
(CertificateFactory
,
Certificate
,
X509Certificate
,
X509Extension
等
)
,通过这些对象,我们可以毫不费力地处理各种类型的数字证书,包括
cer, pem
等。
Java
提供了很多有用的管理证书工具,包括日常中必不可少的
Keytool, JarSigner
等,而某些开源的图形化界面也封装了
Keytool
和
JarSigner
,包括
KeytoolGUI(
基于
Swing
,已经停止开发,商业版本是
KeyStore Explorer)
,
SecureX(
基于
SWT
的
Shell
,以
Eclipse Plugin
发布
)
。
其他协议如
CRL
,
PKCS#11, PKIX
,
OCSP
,在
Java
中都在不断地增强
JDK
1.5
的重要改造之一就是体现在对这些协议的增强上。< /SPAN>
Java
跟
.Net
的一个最大的不同是,在证书处理上,
.Net
使用了
Windows
本地证书库而
Java
使用了它自己的证书库格式
(JKS)
来保证移植性。
Windows
本地证书库是通过
Windows CryptoAPI
接口去提取的,
CryptoAPI
是无法跨平台的,因此,
Java
没有使用
CryptoAPI
。
Java
证书库是一个独立的本地文件,它是通过密码保护来保证其中的私钥
/
证书在未经授权的情况下不能被其他人提取,私钥本身也有密码保护,因此安全性是可以相信的。
密码学的门理论门槛与实践门槛都非常高,虽然我们在应用密码、摘要、数字签名等算法的时候,得益于SPAN lang=EN-US style="FONT-SIZE: 9pt">JCA/JCE
模型的简易性和可扩展性,但是,密码学涉猎面非常广,它远远不止
JCA/JCE
框架所描写的那么简单。
-----BEGIN PGP SIGNATURE-----
Version: PGP Desktop 9.0.5 - Enterprise license
Comment:
http://security.blogjava.net
iQA/AwUBRRFuXE2j31FcBpdPEQJeUgCg8yeWvTWV43aHliN5X2+mIsQS000AoJj6 to/nxmwV688WafhnXdrt8CZ8 =P2yf
-----END PGP SIGNATURE-----
- 大小: 15.1 KB
分享到:
相关推荐
它的设计目标是具有简单性、面向对象、健壮性、安全性、可移植性、高效性和多线程等特点,使得Java在各种领域如Web开发、移动应用、企业级应用、大数据处理等方面都有广泛应用。 1. **Java的起源与特点** - 起源:...
Java语言概述 Java是一种广泛使用的高级编程语言,由Sun Microsystems的James Gosling、Bill Joy和Eric Schmidt等人在1991年发起的“Green Project”中孕育而生。最初,这个项目的目标是为消费电子产品市场,特别是...
Java语言重要概述 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。它的设计目标是具有跨平台性、可移植性、安全性和高效性,使得Java成为开发桌面应用、Web...
### JAVA基础知识概述 #### 一、Java语言特点与体系结构 **Java** 是一种广泛使用的高级编程语言,因其强大的功能性和灵活性,在企业级应用、移动应用(尤其是Android平台)、Web应用等多个领域都有着不可替代的...
Java语言概述 Java开发基础--Java语言概述 Java语言概述 了解Java语言历史和特点 理解Java语言规范 能够区分API、JDK的含义 Java的发展历史 1991年,Sun公司James Gosling领导的Green小组创建了一种新型语言,命名为...
Java语言的设计注重简洁和安全性。它有一套内置的安全机制,如类加载器、安全沙箱和加密算法,用于防止恶意代码对系统造成破坏。此外,Java编译器进行严格的类型检查,减少了运行时错误的可能性。 Java的可移植性...
Java语言概述 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司(现已被Oracle公司收购)于1995年推出。它的设计目标是具有跨平台性、可移植性、安全性和高效性,使得Java在各种领域都有广泛应用,...
Java的代码安全性检测也是其重要特征之一,确保了代码在运行时的安全。 Java虚拟机(JVM)是Java语言的核心组成部分,它是一个模拟的计算机系统,可以解释并执行跨平台的Java字节码。每个平台都需要专门实现JVM来...
Java的特点包括简单易学、面向对象、平台无关性、安全性、高效的网络编程能力、分布式计算支持、多线程处理、便捷的国际化功能以及开发效率高等。相比C和C++,Java在语法上做了很多简化和改进,例如不支持全局变量和...
Java是一种广泛使用的面向对象的编程语言,...以上是对Java的概述和基本语法规则的详细介绍,对于初学者来说,理解和掌握这些基础知识是迈进Java世界的第一步。通过深入学习和实践,可以逐步成为一名熟练的Java开发者。
Java 语言概述 Java 是一种面向对象的、高级的、平台无关的编程语言,由 Sun Microsystems 公司在1991年推出的研究项目Green中诞生。它的设计初衷是为了简化软件开发,特别是在互联网和分布式计算环境中的应用。Java...
#### 一、Java安全编程概述 Java作为一种广泛使用的编程语言,在设计之初就考虑到了安全因素,其内置了许多安全机制。然而,即便是这样一种安全的语言,如果开发者忽视了一些重要的安全实践,仍然可能导致安全漏洞...
【Java语言概述】 Java语言,由Sun Microsystems(后被甲骨文公司Oracle收购)于1995年推出,是一种广泛应用于互联网环境的面向对象的编程语言。它以其“一次编写,到处运行”的特性,即Write Once, Run Anywhere ...
【Java语言概述】 Java语言,作为一种广泛使用的高级编程语言,起源于1990年代的Sun Microsystems公司。它的诞生源于“Green项目”,旨在为消费类设备如机顶盒和家电控制芯片创造一种小巧且可移植的编程语言。由...
Java平台安全性概述 Java之所以在安全性方面受到青睐,一方面是因为Java的编译器输出的不是可执行代码,而是字节码,这为Java平台提供了一定程度的安全性。字节码需要通过Java虚拟机(JVM)在运行时进行解释和执行...
### Java安全手册指南知识点 #### 一、关于本教程(About this tutorial) ##### 内容概览 本教程旨在提供有关Java平台上的安全编程概念及其实施的基础知识。它覆盖了加密学的基本概念以及如何在Java编程语言中...