关于Java企业级应用开发中的安全知识的探讨

相信绝大多数做Java的朋友或多或少都会接触到Java安全技术。消息摘要算法,对称/非对称加密算法,数字签名算法等等都可经过合理组合,构建一套安全的网络交互平台。此外,数字证书作为公钥载体,可以用于HTTPS安全网络平台。这些Java安全技术都有哪些实现上的特点,哪种技术更适合你?

1.对于明文交互的网络系统,安全的定义就是保证网络交互内容的一致性。这恰恰是网络安全以及密码学领域的范畴,而消息摘要算法正是该系统最好的校验工具。Java 6提供了最基本的消息摘要算法实现,Commons Codec对其保持提供了更为实用的算法包装,而Bouncy Castle则提供了更多的算法扩展。
许多人误将消息摘要算法视为密码学领域之外的学科,这是大错特错的!

2.对于一般非安全领域公司,大多都会涉及机密数据的加密传输,或者是机密数据的加密存储。DES算法是否足够安全?AES算法的密钥长度是否受到出口限制?Java 6所不支持的IDEA算法又该如何实现?

3.对称加密算法是机密领域中最核心的算法。尽管如此,却无法逃避密钥安全传递的问题。而非对称加密算法很好的解决了这一问题,通过公钥和私钥有效地将交互双方分离,并透过非对称加密算法进行密钥交换。DH算法无疑非对称加密算法的鼻祖,而RSA更是非对称加密算法的典范,同样ElGamal也是较为广泛使用的非对称加密算法,而这一算法必须通过Bouncy Castle来实现。

4.RSA算法不仅仅只是非对称加密算法中的一个经典,它同样是数字签名算法中的典范。根据RSA数字签名算法实现原理,DSA算法得以出现,并随之产生了许多新的数字签名算法,如ECDSA。而这一算法同样没有在Java 6中获得支持,但Bouncy Castle又一次提供了及时的支持。数字签名算法在结合了消息摘要算法与非对称加密算法的特点后,将其有机结合便具有了身份认证的作用。

5.数字证书是非对称加密算法公钥的载体,是作为身份认证最有效的凭证之一。OpenSSL和Java原生的KeyTool是数字证书管理中最常用的工具,但OpenSSL构建数字证书步骤繁杂,KeyTool构建的数字证书又无法构建双向认证服务。这一难题成为步入HTTPS网络安全平台的最后一个门槛!

6.基于HTTPS平台进行网络安全交互,是绝大多数B2B、B2C平台必选的安全架构,但同样适用于其他领域的安全需要。但这一技术,常常涉及到很多密码学多项加密算法的理论,数字证书的构建,以及服务器的配置,往往成为许多公司渴望而不可及的安全技术。

当然,通过HTTPS平台进行网络交互当然是最安全的手段之一。但对于一些安全要求较为低的环境,有机结合各种技术是提高系统安全性极为有效的一种手段。

在实际应用中,哪种安全技术你更常用?那种技术你更需要?哪种技术你有疑惑?欢迎大家一起讨论!

你可能感兴趣的:(java,算法,应用服务器,网络应用,企业应用)