针对SSL在国内无法实现强加密所带来的问题,我们提出了一个用Java改进安全套接层加密模式的新方案.新方案使用独立的Java Applet来实现SSL的强加密模式,并且可以跨越防火墙,加密的效果比现有的SSL的128位强加密的实现更加安全。

一、用Java Applet来实现SSL的128位强加密的设计思路

为了实现SSL强加密的连接,必须解决以下4个问题,此方案正是基于这4个方面的考虑提出的。

1、不同操作系统中的SSL可能有不同版本,如SSL2. 0 ,SSL3. 0。由于目前国内的大多数操作系统中的SSL协议只有弱加密模式的实现,因此,不能直接利用基于操作系统的通信方式,比如通信组件,而必须使SSL实现独立于操作系统以避开操作系统弱加密模式的通信限制。

这样,改进方案必须不依赖于操作系统。我们提出使用JavaApplet.

2、对于Java Applet的SSL连接的实现,最直接的方式就是使用浏览器来实现。这里采用统一的XML格式,实现方法如下:

〈form method =”POST”name =”SECURE”

target = https:∥Communication. CAP/servlets/ GetData〉

Value:〈input type =”XML”size =”20”name =”Value”〉〈/form〉

①HTTP , W3C , http :∥www. w3.org/ Protocols/

这个方法使用https指明是通过SSL连接的http。显然,这种方法的安全性依赖于浏览器的SSL。虽然Linux下面的Mozilla和Kopera等浏览器可以实现128位的强加密模式,但是就目前国内的情况而言,这些浏览器使用的范围较小,因此这种直接利用浏览器实现128位强加密的连接方式并不通用。

另一方面,国内使用最为广泛的Navigator ,IE等浏览器由于同样受到美国法律限制,也都只能提供40位的加密器。这样,这种直接的简单实现显然不能满足我们的要求;另外,直接利用浏览器对传输的文件类型强加了限制,这对有些试图通过独立的通信文件格式在客户段和服务器间进行通信的情况也是不适用的。为此,我们提出的改进方案必须独立完成SSL而不能依赖于浏览器。

3、为独立完成SSL实现,使用Java的Socket类,这样又遇到了防火墙的问题,为了安全和效率方面的考虑,很多服务器都会放在防火墙之后。这样,当试图通过Applet直接连接时,无法绕过这个防火墙而打开在防火墙后面的连接服务。解决防火墙的一个常用办法就是使用可信赖的代理,可是Socket类无法接入配置信息,也就是说不能在Socket类中设置代理。为了解决这个矛盾,在改进的SSL连接方案中,必须考虑使用其他类以便配置连接。

4、在Applet实现SSL强加密模式的连接方案中,使用URLConnection类建立到服务器的连接,具体URLConnection类的连接如下:

URL serv-con = new URL(https:∥Com2munications. CAP/ sccure”);

URLConnection serv-fork1 = serv-con.open2Connection();

InputStream instr = serv-fork1. getInput2Stream();

OutputStream outstr = serv-fork1. getOutput2Stream();

综合上面所述的这些因素,我们提出了一个新的SSL强加密模式的Java实现方案,该方案改进了目前国内的SSL的加密模式,充分考虑到了SSL连接的通用性和安全性。

二、用Java Applet来实现SSL的128位强加密的具体实现过程

假设要越过防火墙使用SSL的128位强加密模式连接其后面的CAP服务器,使用Applet自身完成的128位强加密加上浏览器40位的弱加密来共同实现改进的SSL实现方案,具体方案图如图所示。

如何用Java Applet来实现SSL的128位强加密

首先,利用类java. net. URLConnection通过一个可信赖的代理来跨越防火墙打开CAP的连接服务;然后,通过Applet的SSLConnection完成128位的SSL强加密模式;接着,利用浏览器的40位弱加密方式的SSL对加密后的数据进行传送。这样的双重加密不但可以实现128位强加密(实际上的加密性能优于128位的强SSL加密模式)而且可以通过可信赖的代理服务器跨越防火墙,无论在方案的普适性或是其安全性方面都比通常的SSL连接要好得多。当然,这些优点也是以牺牲了一定的系统资源为代价的。改进方案的一些特性如下:

1、以128位IDEA作为对称加密器;

2、以RSA作为交换密匙算法;

3、设置会话缓存加快连接;

4、 MD5作为内部哈希算法;

5、不大于40 Kbyte的jar文件,如果为了系统运行的更快,可以按需要根据各个客户端所在的操作系统利用J IT重新编译成本地代码以提高性能;

6、可以在任何操作平台上运行。

小知识之JavaApplet:

JavaApplet就是用Java语言编写的小应用程序,可以直接嵌入到网页中,并能够产生特殊的效果。