如何用Java Applet來(lái)實(shí)現(xiàn)SSL的128位強(qiáng)加密

針對(duì)SSL在國(guó)內(nèi)無(wú)法實(shí)現(xiàn)強(qiáng)加密所帶來(lái)的問(wèn)題,我們提出了一個(gè)用Java改進(jìn)安全套接層加密模式的新方案.新方案使用獨(dú)立的Java Applet來(lái)實(shí)現(xiàn)SSL的強(qiáng)加密模式,并且可以跨越防火墻,加密的效果比現(xiàn)有的SSL的128位強(qiáng)加密的實(shí)現(xiàn)更加安全。

一、用Java Applet來(lái)實(shí)現(xiàn)SSL的128位強(qiáng)加密的設(shè)計(jì)思路

為了實(shí)現(xiàn)SSL強(qiáng)加密的連接,必須解決以下4個(gè)問(wèn)題,此方案正是基于這4個(gè)方面的考慮提出的。

1、不同操作系統(tǒng)中的SSL可能有不同版本,如SSL2. 0 ,SSL3. 0。由于目前國(guó)內(nèi)的大多數(shù)操作系統(tǒng)中的SSL協(xié)議只有弱加密模式的實(shí)現(xiàn),因此,不能直接利用基于操作系統(tǒng)的通信方式,比如通信組件,而必須使SSL實(shí)現(xiàn)獨(dú)立于操作系統(tǒng)以避開(kāi)操作系統(tǒng)弱加密模式的通信限制。

這樣,改進(jìn)方案必須不依賴于操作系統(tǒng)。我們提出使用JavaApplet.

2、對(duì)于Java Applet的SSL連接的實(shí)現(xiàn),最直接的方式就是使用瀏覽器來(lái)實(shí)現(xiàn)。這里采用統(tǒng)一的XML格式,實(shí)現(xiàn)方法如下:

〈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/

這個(gè)方法使用https指明是通過(guò)SSL連接的http。顯然,這種方法的安全性依賴于瀏覽器的SSL。雖然Linux下面的Mozilla和Kopera等瀏覽器可以實(shí)現(xiàn)128位的強(qiáng)加密模式,但是就目前國(guó)內(nèi)的情況而言,這些瀏覽器使用的范圍較小,因此這種直接利用瀏覽器實(shí)現(xiàn)128位強(qiáng)加密的連接方式并不通用。

另一方面,國(guó)內(nèi)使用最為廣泛的Navigator ,IE等瀏覽器由于同樣受到美國(guó)法律限制,也都只能提供40位的加密器。這樣,這種直接的簡(jiǎn)單實(shí)現(xiàn)顯然不能滿足我們的要求;另外,直接利用瀏覽器對(duì)傳輸?shù)奈募愋蛷?qiáng)加了限制,這對(duì)有些試圖通過(guò)獨(dú)立的通信文件格式在客戶段和服務(wù)器間進(jìn)行通信的情況也是不適用的。為此,我們提出的改進(jìn)方案必須獨(dú)立完成SSL而不能依賴于瀏覽器。

3、為獨(dú)立完成SSL實(shí)現(xiàn),使用Java的Socket類,這樣又遇到了防火墻的問(wèn)題,為了安全和效率方面的考慮,很多服務(wù)器都會(huì)放在防火墻之后。這樣,當(dāng)試圖通過(guò)Applet直接連接時(shí),無(wú)法繞過(guò)這個(gè)防火墻而打開(kāi)在防火墻后面的連接服務(wù)。解決防火墻的一個(gè)常用辦法就是使用可信賴的代理,可是Socket類無(wú)法接入配置信息,也就是說(shuō)不能在Socket類中設(shè)置代理。為了解決這個(gè)矛盾,在改進(jìn)的SSL連接方案中,必須考慮使用其他類以便配置連接。

4、在Applet實(shí)現(xiàn)SSL強(qiáng)加密模式的連接方案中,使用URLConnection類建立到服務(wù)器的連接,具體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();

綜合上面所述的這些因素,我們提出了一個(gè)新的SSL強(qiáng)加密模式的Java實(shí)現(xiàn)方案,該方案改進(jìn)了目前國(guó)內(nèi)的SSL的加密模式,充分考慮到了SSL連接的通用性和安全性。

二、用Java Applet來(lái)實(shí)現(xiàn)SSL的128位強(qiáng)加密的具體實(shí)現(xiàn)過(guò)程

假設(shè)要越過(guò)防火墻使用SSL的128位強(qiáng)加密模式連接其后面的CAP服務(wù)器,使用Applet自身完成的128位強(qiáng)加密加上瀏覽器40位的弱加密來(lái)共同實(shí)現(xiàn)改進(jìn)的SSL實(shí)現(xiàn)方案,具體方案圖如圖所示。

如何用Java Applet來(lái)實(shí)現(xiàn)SSL的128位強(qiáng)加密

首先,利用類java. net. URLConnection通過(guò)一個(gè)可信賴的代理來(lái)跨越防火墻打開(kāi)CAP的連接服務(wù);然后,通過(guò)Applet的SSLConnection完成128位的SSL強(qiáng)加密模式;接著,利用瀏覽器的40位弱加密方式的SSL對(duì)加密后的數(shù)據(jù)進(jìn)行傳送。這樣的雙重加密不但可以實(shí)現(xiàn)128位強(qiáng)加密(實(shí)際上的加密性能優(yōu)于128位的強(qiáng)SSL加密模式)而且可以通過(guò)可信賴的代理服務(wù)器跨越防火墻,無(wú)論在方案的普適性或是其安全性方面都比通常的SSL連接要好得多。當(dāng)然,這些優(yōu)點(diǎn)也是以犧牲了一定的系統(tǒng)資源為代價(jià)的。改進(jìn)方案的一些特性如下:

1、以128位IDEA作為對(duì)稱加密器;

2、以RSA作為交換密匙算法;

3、設(shè)置會(huì)話緩存加快連接;

4、 MD5作為內(nèi)部哈希算法;

5、不大于40 Kbyte的jar文件,如果為了系統(tǒng)運(yùn)行的更快,可以按需要根據(jù)各個(gè)客戶端所在的操作系統(tǒng)利用J IT重新編譯成本地代碼以提高性能;

6、可以在任何操作平臺(tái)上運(yùn)行。

小知識(shí)之JavaApplet:

JavaApplet就是用Java語(yǔ)言編寫的小應(yīng)用程序,可以直接嵌入到網(wǎng)頁(yè)中,并能夠產(chǎn)生特殊的效果。