`
housheng33
  • 浏览: 231121 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java安全概述

 
阅读更多
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1

Java安全体系,博大精深,这个体系按照Sun的Java安全白皮书,基本上可以分为5个部分:
1. Java平台

Java语言本身嵌入了安全特性,其中包括编译器/JVM对强数据类型的支持,自动的内存管理,字节代码的验证机制以及独特的安全类加载方式,这些特性都是SPAN lang=EN-US>Java语言本身所赋有的,本文不打算作深入的探讨这些基础概念,建议阅读。
2. Java 密码体系

Java密码[1](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证书库是一个独立的本地文件,它是通过密码保护来保证其中的私钥/证书在未经授权的情况下不能被其他人提取,私钥本身也有密码保护,因此安全性是可以相信的。

[1]密码学的门理论门槛与实践门槛都非常高,虽然我们在应用密码、摘要、数字签名等算法的时候,得益于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-----
分享到:
评论

相关推荐

    Java程序设计基础:Java语言概述.pptx

    Java语言概述 Java开发基础--Java语言概述 Java语言概述 了解Java语言历史和特点 理解Java语言规范 能够区分API、JDK的含义 Java的发展历史 1991年,Sun公司James Gosling领导的Green小组创建了一种新型语言,命名为...

    java02——Java概述

    ①面向对象 ②安全性 ③多线程 ④简单易用 ⑤开源 ⑥跨平台 5)①JDK:Java开发工具包【JVM、核心类库、开发工具】 ②JRE:Java的运行环境【JVM、核心类库、运行工具】 练习:HelloWorld的编写。

    网上银行的安全系统概述

    网上银行的安全系统概述,介绍JAVA平台的网上银行的安全系统概述

    Java 安全 电子书

    Java安全性 第一部分:密码术基础 1.关于本教程 2.Java安全性编程概念 3.确保消息的完整性 4.保持消息的机密性 5.用公钥保密消息 6.无纸签名 7.证实你的身份 8.信任代码 9.SSL/TLS:保护C/S通信 10.结束语 第二部分...

    JAVA程序设计:第2章 java编程概述.ppt

    JAVA程序设计:第2章 java编程概述.ppt

    Java基础入门自学课件 第01章 Java 程序设计概述(共46页).ppt

    1.1 机器语言、汇编语言和高级语言...1.2 Java 语言概述 1.3 Java平台和主要应用方向 1.4 Java的垃圾回收与代码安全检查机制 1.5 典型的Java开发环境 1.6 Java编程示例 1.7 反编译工具的介绍 1.8 Java JDK 6 新功能介绍

    java2平台安全技术结构API设计和实现

    本书首先概述了计算机和网络安全概念并解释了Java安全模型,并在此基础上,详细描述了Java 2平台中新增加的许多安全结构方面的措施,同时对Java安全性的实施提出了使用指导,描绘了如何定制、扩展和精化安全结构以及...

    如何利用MQ实现大文件传输和交换具有可靠、安全、断点传输等特点(java 实现概述).doc

    如何利用MQ实现大文件传输和交换具有可靠、安全、断点传输等特点(java 实现概述)

    JAVA 2平台安全技术-结构,API设计和实现

    本书首先概述了计算机和网络安全概念并解释了Java安全模型,并在此基础上,详细描述了Java 2平台中新增加的许多安全结构方面的措施,同时对Java安全性的实施提出了使用指导,描绘了如何定制、扩展和精化安全结构以及...

    Java_2平台安全技术-结构,API设计和实现

    本书首先概述了计算机和网络安全概念并解释了Java安全模型,并在此基础上,详细描述了Java 2平台中新增加的许多安全结构方面的措施,同时对Java安全性的实施提出了使用指导,描绘了如何定制、扩展和精化安全结构以及...

    java2平台安全技术-结构,api设计和实现.rar

    本书首先概述了计算机和网络安全概念并解释了Java安全模型,并在此基础上,详细描述了Java 2平台中新增加的许多安全结构方面的措施,同时对Java安全性的实施提出了使用指导,描绘了如何定制、扩展和精化安全结构以及...

    B01Java语言概述-1ppt课件(全).ppt

    B01Java语言概述-1ppt课件(全).ppt

    Java程序开发教学课件:02-Java概述.ppt

    Java程序开发教学课件:02-Java概述.ppt

    JAVA_API1.6文档(中文)

    java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。 java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的...

    第二章 Java概述.pptx

    第二章 Java概述.pptx

    java安全算法RSA 工具类

    * RSA加密原理概述 * RSA的安全性依赖于大数的分解,公钥和私钥都是两个大素数(大于100的十进制位)的函数。 * 据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积 * =====================...

Global site tag (gtag.js) - Google Analytics