USB安全鑰功能擴(kuò)展與優(yōu)化設(shè)計(jì)
USB安全鑰最早基于USB的熱插拔、速度以及硬件等優(yōu)勢(shì),結(jié)合加密算法,用于辦公文件、軟件等的存儲(chǔ)和加密。但USB安全鑰的用武之地遠(yuǎn)不止這些,與網(wǎng)絡(luò)技術(shù)結(jié)合,用于時(shí)下最時(shí)尚的電子商務(wù)中,才使其大顯神通。USB安全鑰結(jié)合傳統(tǒng)的電子商務(wù)核心技術(shù)和新興的USB技術(shù),用于實(shí)現(xiàn)電子商務(wù)中的關(guān)鍵技術(shù)――身份識(shí)別,在未來電子商務(wù)領(lǐng)域具有廣闊的應(yīng)用前景。USB安全鑰集數(shù)據(jù)加密和數(shù)據(jù)存儲(chǔ)兩大功能于一體,推動(dòng)了電子商務(wù)的發(fā)展。
傳統(tǒng)的電子商務(wù)或是網(wǎng)絡(luò)email等的身份認(rèn)證基本上是通過兩種方式來實(shí)現(xiàn)的。一種是密碼機(jī)制,雙方約定好規(guī)則。這是目前最為普遍的方式,但是這種方式的嚴(yán)重缺點(diǎn)顯而易見。密碼作為最重要的信息,在網(wǎng)絡(luò)上傳輸,很容易被黑客攻擊截獲,經(jīng)常發(fā)生密碼被盜。第二種方式是通過第三方的認(rèn)證,雙方共同信任第三方公司提供的信息,從而進(jìn)行交易。微軟在.NET計(jì)劃中推出的認(rèn)證服務(wù)器就提供這種服務(wù)。但是,信譽(yù)度建立在第三方上,便會(huì)受到第三方的制約,掏錢不說,還要擔(dān)心第三方是否會(huì)倒閉。USB安全鑰解決了這兩種方式無法解決的問題。
完整的USB安全鑰系統(tǒng)由三部分組成:安全鑰端,采用Motorola公司帶USB接口的8位單片機(jī)MC68HC908JB8構(gòu)成;PC端,由任何一臺(tái)可接入網(wǎng)絡(luò)的PC構(gòu)成,并安裝PC端的用戶身份認(rèn)證軟件;Server端,任何一臺(tái)網(wǎng)絡(luò)服務(wù)器安裝用于身份認(rèn)證的Server端軟件。
USB安全鑰系統(tǒng)結(jié)構(gòu)體系及功能流程如圖1所示,列出了九個(gè)步驟,描述了USB安全鑰從插入PC到完成一次身份識(shí)別的完整流程。
需要強(qiáng)調(diào)的是,在上述步驟中,PC僅僅起一個(gè)Media(媒介)的作用。任何重要的數(shù)據(jù)都沒有經(jīng)過PC,在網(wǎng)絡(luò)上傳輸?shù)膬H僅是8個(gè)字節(jié)的隨機(jī)數(shù)(它只在Server服務(wù)器和安全鑰端有意義,只對(duì)特定的加密算法和密鑰有意義),被黑客截取也不會(huì)有問題。這8個(gè)字節(jié)的隨機(jī)數(shù)由網(wǎng)絡(luò)Server產(chǎn)生,經(jīng)由PC傳遞給USB安全鑰加密;加密后的隨機(jī)數(shù)再由PC不加任何改變地傳遞給Server;Server去調(diào)用解密算法解開加密的隨機(jī)數(shù),與原來未加密的隨機(jī)數(shù)比較,如果相同則說明USB安全鑰的持有者身份合理。整個(gè)身份認(rèn)證也告結(jié)束。這里,USB安全鑰體現(xiàn)出兩大優(yōu)點(diǎn):(1)沒有任何重要的個(gè)人信息在網(wǎng)上傳遞,保證了安全性;(2)Server由網(wǎng)絡(luò)商自己維護(hù),安全鑰由用戶攜有,雙方的認(rèn)證沒有依靠第三方,快捷、安全、信譽(yù)度高。當(dāng)然,USB安全鑰還有其他很多優(yōu)點(diǎn),例如可以在PC上熱插拔,可以在任何一臺(tái)支持USB的PC上工作(現(xiàn)在幾乎所有的PC都應(yīng)該支持USB)等。
2 USB安全鑰的技術(shù)細(xì)節(jié)
USB安全鑰技術(shù),從設(shè)計(jì)上可以分為三個(gè)模塊:Server端的網(wǎng)絡(luò)通訊和加密算法設(shè)計(jì)、PC端的USB驅(qū)動(dòng)程序和網(wǎng)絡(luò)通訊設(shè)計(jì)、安全鑰端的USB固件和加密算法設(shè)計(jì)。涉及到的計(jì)算機(jī)技術(shù)包括Socket網(wǎng)絡(luò)編程技術(shù)、USB驅(qū)動(dòng)程序設(shè)計(jì)技術(shù)和加密算法技術(shù)。可以說整個(gè)設(shè)計(jì)內(nèi)容龐雜,技術(shù)難度高。因此,設(shè)計(jì)時(shí)就需細(xì)化,一步步完成單個(gè)功能,再進(jìn)行聯(lián)調(diào),將單個(gè)模塊融合成完整的USB安全鑰。
后期的功能擴(kuò)展和優(yōu)化設(shè)計(jì)也是針對(duì)三個(gè)模塊,應(yīng)用三大技術(shù)完成。主要是:服務(wù)器(Server)端DES加密算法的研究,設(shè)計(jì)加密算法的動(dòng)態(tài)鏈接庫(kù)DLL,提供給客戶最簡(jiǎn)單的API;PC和安全鑰端驅(qū)動(dòng)程序的研究,實(shí)現(xiàn)PC端友好的程序界面,動(dòng)態(tài)在線修改存儲(chǔ)在安全鑰內(nèi)的用戶產(chǎn)品信息。本文將詳細(xì)介紹擴(kuò)展和優(yōu)化的設(shè)計(jì)方法,從而揭示USB安全鑰的技術(shù)細(xì)節(jié)。
2.1 如何設(shè)計(jì)Server端加密算法及其DLL
密碼算法(Algorithm)就是指加密函數(shù)(Encryption)和解密函數(shù)(Decryption)。有加密函數(shù),那么必然有一套與它對(duì)應(yīng)的解密函數(shù)?,F(xiàn)代密碼學(xué)用密鑰技術(shù)解決了保密性不夠的問題。密鑰用K表示。K的取值范圍叫做密鑰空間??梢杂萌缦率阶觼肀硎炯用芎徒饷芎瘮?shù)之間的關(guān)系:
DK(EK(M))=M
其中,E為加密函數(shù),D為解密函數(shù),M為被加密的原文。有一個(gè)重要的結(jié)論:所有算法的安全性都基于密鑰的安全性,而不是算法細(xì)節(jié)的安全性。這就是說,算法可以公開,只要密鑰是保密的,則這個(gè)算法就是安全的。簡(jiǎn)單地說,密鑰就是與密文疊加在一起的一組數(shù)。
標(biāo)準(zhǔn)加密算法DES作為ANSI的數(shù)據(jù)加密算法和ISO的DEA-1,成為世界范圍內(nèi)的標(biāo)準(zhǔn)已經(jīng)20多年。就目前密碼學(xué)的發(fā)展情況來說,DES的安全性還是能夠滿足用戶需求的。由于完整的DES算法相當(dāng)復(fù)雜,這里僅簡(jiǎn)單介紹算法的結(jié)構(gòu)。
DES是分組加密算法,以64位為一組對(duì)明文進(jìn)行分組,然后進(jìn)行加密和解密。加密和解密的算法相同,只是密鑰的編排不同。密鑰長(zhǎng)度為56位,通常是64位,但是每字節(jié)第8位都用來作為奇偶校驗(yàn)位,因此實(shí)際上只有56位。DES共有16輪,即對(duì)同一組明文結(jié)合密鑰進(jìn)行16輪相同的加密過程,最終達(dá)到加密要求。
具體到每一輪的加密過程是這樣的:每一輪中,密鑰位移位,然后從密鑰中選出48位。數(shù)據(jù)的32位右半部分?jǐn)?shù)據(jù)擴(kuò)展成48位,與密鑰結(jié)合。然后再將這48位數(shù)據(jù)變換為32位,并與數(shù)據(jù)的32位左半部分相與后作為新的32位右半部分。而32位左半部分基本不變。最后,左右各32位數(shù)組合在一起便構(gòu)成了一輪加密后的64位密文。重復(fù)同樣運(yùn)算16次,便完成了加密/解密功能[4]。
評(píng)論