用JAVA开发的程序为什么更安全
java几乎成为网络程序的标准语言
,java给我们提供了先进的应用技术的同时,同时给我们提供了非常强大的安全技术。这些技术主要包括:
1加密和解密技术;
2JAVA源代码保护技术;
3数据完整性保护技术(数字签名和消息摘要);
4数字证书技术;
5其它更高级的技术(包括Kerberos技术和JAVAGSS-API技术等等);
Java加密扩展即JavaCryptographyExtension,简称JCE。它是Sun的加密服务软件,包含了加密和密匙生成功能。JCE是JCA(JavaCryptographyArchitecture)的一种扩展。
JCE没有规定具体的加密算法,但提供了一个框架,加密算法的具体实现可以作为服务提供者加入。除了JCE框架之外,JCE软件包还包含了SunJCE服务提供者,其中包括许多有用的密码算法和数字签名算法,例如DES、RSA、DSA、SHA、MD5等。使用JCE进行加密解密非常方便,在后面我们将详细的讲述这一技术。
如何最大限度的保证应用的安全性
系统被挂了我们可以重装系统,但是应用程序和服务的敏感数据和信息被改了或者被盗窃了那我们只有祈祷上帝,希望攻击者能够良心发现。不过千万不要沮丧,我们可以利用JAVA为我们提供的一些武器来增强我们的信心,利用这些东西至少可以挡住99%以上的攻击行为,使我们的损失最小化。
(1) 使用JCE技术来加密敏感信息和保护敏感信息的数字摘要;
(2) 使用JAVALoggingAPI建立Ri志和审核机制;
(3) 使用JAAS进行用户身份认证和授权;
(4) 利用数字签名技术保证数据的完整性;
(5) 利用自定义的类加载器来加载加密后的JAVA类文件以抗击JAVA源代码分析和攻击;
(6) 使用JCE来构筑安全通讯协议来保证数据传输的安全。
5使用JCE技术来加密敏感信息和保护敏感信息的数字摘要
目前SUN公司的最新版本的JDK(JDK1.5)包含以下几种密码算法:
(1)DES:DES(数据加密标准)是由IBM于上世纪70年代发明的,美国G0vernment将其采纳为标准。它是一种56位分组密码。
(2)TripleDES:该算法被用来解决使用DES技术的56位时密钥Ri益减弱的强度,其方法是:使用两个密钥对明文运行DES算法三次,从而得到112位有效密钥强度。TripleDES有时称为DESede(表示加密、解密和加密这三个阶段)。
(3)AES:AES(高级加密标准)取代DES成为美国标准。它是由JoanDaemen和VincentRijmen发明的,也被称为Rinjdael算法。它是128位分组密码,密钥长度为128位、192位或256位。
(4)RC2、RC4、和RC5:这些算法来自领先的加密安全性公司RSASecurity。
(5)Blowfish:这种算法是由BruceSchneier开发的,它是一种具有从32位到448位(都是8的整数倍)可变密钥长度的分组密码,被设计用于在软件中有效实现微处理器。
(6)其它:包括RSA、MD5、SHA、DAS等。
除此而外,由于JCE的开放性,JDK还支持第三方提供的密码算法。
在系统中,我们首先应该搞清楚的问题是:
(1)该对什么数据加密?(2)选择什么样的加密算法?(3)如何实现加密?
通过JCE使用对称加密算法的过程一般是这样的:
1引入JCE加密算法库;
2将要加密的数据变成一个字节数组;
3调用Cipher.getInstance建立一个Cipher实例;
4选择加密模式,调用init方法传递密钥并初始化Cipher;
5调用doFinal方法,传递要加密的字节数组进行加密;
6将加密后的字节数组转变为普通的字符串类型。