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