1.3 捍卫企业应用安全的银弹

通过对1.2节的学习,我们已经找到了处理安全问题的武器。但是,我们还缺少一枚解决安全问题的银弹—密码学。的确,密码学是企业应用安全问题领域的一枚银弹,是解决安全问题的核心所在。

1.3.1 密码学在安全领域中的身影

安全领域离不开密码学的支持。例如,在OSI安全体系结构中通过数据加密确保数据的保密性,在TCP/IP安全体系结构中以加密算法为基础构建SSL/TLS协议,这些都说明密码学与安全问题密不可分。

密码学在加密算法上大体可分为单向加密算法、对称加密算法、非对称加密算法三大类。MD5、SHA算法是单向加密算法的代表,单向加密算法是数据完整性验证的常用算法。DES算法是对称加密算法的典型代表,对称加密算法是数据存储加密的常用算法。RSA算法是非对称加密算法的典型代表,非对称加密算法是数据传输加密的常用算法。对称加密算法也可以用做数据传输加密,但非对称加密算法在密钥管理方面更有优势。相对对称加密算法而言,非对称加密算法在安全级别上等级更高,但非对称加密算法在时间效率上远不如对称加密算法。

以密码学为基础的各种安全实现相继出现,如HTTPS协议和一系列的“数字技术”(数字摘要、数字信封、数字签名、数字证书等),这些构成了认证技术的基础。

密码学为安全领域筑起了一道铜墙铁壁。

1.3.2 密码学与Java EE

Java EE对密码学的支持是相当广泛的,主要表现在如下几个方面:

❑ Java API支持:Java API支持多种加密算法。如MessageDigest类,可以构建MD5、SHA两种加密算法;Mac类可以构建HMAC加密算法;Cipher类可以构建多种加密算法,如DES、AES、Blowfish对称加密算法,以及RSA、DSA、DH等多种非对称加密算法;Signature类可以用于数字签名和签名验证;Certificate类可用于操作证书;等等。

❑ JSP容器支持:常用的应用服务器(如Tomcat)通过简单的配置即可支持SSL/TLS协议,获取证书配置,有效地构建HTTPS应用。

❑ Java工具支持:通过KeyTool可以很好地完成密钥管理、证书管理等;通过JarSigner可以完成代码签名。