靜態(tài)密碼存在著比較多的安全隱患,攻擊者有很多手段獲得靜態(tài)密碼,管理密碼也具有較高的成本,我在前文《中國(guó)網(wǎng)上銀行系統(tǒng)安全性分析》中曾經(jīng)論證過(guò),使用硬件安全產(chǎn)品“動(dòng)態(tài)密碼鎖”或者“USB Key”可以較好的解決這個(gè)問(wèn)題,但是會(huì)帶來(lái)加密鎖的成本,在不增加硬件成本的情況下,我們也可以通過(guò)一些設(shè)計(jì)上的技巧和措施在一定程度上來(lái)保證登錄者的身份。
一、客戶端和服務(wù)器端的安全
客戶端的安全,主要是用戶密碼本身的安全性(密碼長(zhǎng)度和復(fù)雜性等)以及用戶電腦的安全性,包括用戶電腦沒(méi)有安裝黑客木馬軟件,登錄程序沒(méi)有被第三方程序加載調(diào)試,用戶錄入框組織鍵盤Hook程序等等,通過(guò)一些代碼即可解決。
服務(wù)器端的安全,包括服務(wù)器自身的安全(系統(tǒng)漏洞等等)以及程序設(shè)計(jì)上的安全,我這里主要講一下程序設(shè)計(jì)上的安全。最基本的問(wèn)題是,用戶的密碼不應(yīng)該直接保存在服務(wù)器的數(shù)據(jù)庫(kù)上,也不應(yīng)該將密碼用單鑰算法加密后保存,最基本的認(rèn)證方式是通過(guò)單向散列函數(shù)對(duì)密碼進(jìn)行認(rèn)證。在《軟件加密技術(shù)和注冊(cè)機(jī)制》一文中介紹了一些單向散列函數(shù)可以實(shí)現(xiàn)簡(jiǎn)單的認(rèn)證。目前大多數(shù)網(wǎng)站都使用MD5函數(shù)進(jìn)行登錄認(rèn)證,不過(guò)我推薦使用安全性更高的SHA1散列函數(shù)來(lái)進(jìn)行登錄認(rèn)證。
二、網(wǎng)絡(luò)傳輸上的安全
目前的網(wǎng)絡(luò)協(xié)議通過(guò)HTTP協(xié)議進(jìn)行通訊,存在很大的安全隱患,黑客可以通過(guò)SNIFFER工具進(jìn)行抓包分析網(wǎng)絡(luò)數(shù)據(jù)包,因此用戶名和密碼的傳輸應(yīng)該使用非明文的方式傳輸,這里就用到了“公開密鑰密碼”的概念。
學(xué)過(guò)基本的“密碼學(xué)”的人都應(yīng)該知道“公開密鑰算法(也叫非對(duì)稱算法、雙鑰算法)”這個(gè)概念,即用作加密的密鑰不同于用作解密的密鑰,而且解密密鑰不能根據(jù)加密密鑰計(jì)算出來(lái)。
加密的傳輸過(guò)程分為兩部分,一部分為身份認(rèn)證,用戶鑒別這個(gè)用戶的真?zhèn)危涣硗庖徊糠譃閿?shù)據(jù)加密,用于數(shù)據(jù)的保密。這兩部分功能都需要用到非對(duì)稱加密技術(shù)。
首先是身份認(rèn)證,通訊的數(shù)據(jù)可以這樣進(jìn)行處理,將用戶的信息(用戶名、密碼等)用該用戶的私鑰進(jìn)行加密,然后再進(jìn)行傳輸,而在服務(wù)器端會(huì)保存此用戶的公鑰,用此用戶的公鑰對(duì)傳過(guò)來(lái)的信息進(jìn)行解密,就可以得到正確的明文,這樣就完成了一次安全的網(wǎng)絡(luò)通訊。
通訊過(guò)程的示例如下圖所示,Alice用自己的私鑰對(duì)明文進(jìn)行加密后傳輸?shù)椒?wù)器,服務(wù)器上的用戶(例如Bob)擁有很多用戶的公鑰,因此使用Alice的公鑰對(duì)密文進(jìn)行解密,如果密鑰正確的話,就可以解密出明文,也就完成了對(duì)Alice的身份認(rèn)證。
然后是數(shù)據(jù)加密,數(shù)據(jù)加密和數(shù)據(jù)認(rèn)證正好相反,使用接收方的公鑰對(duì)數(shù)據(jù)進(jìn)行加密,傳輸?shù)倪^(guò)程中,即使數(shù)據(jù)被黑客截獲,也無(wú)法使用這些密文,接收方收到密文后,用自己的私鑰對(duì)密文進(jìn)行解密,從而完成了一次數(shù)據(jù)的加密傳輸。
通訊過(guò)程的示例如下圖所示,Alice需要發(fā)給Bob一段加密的信息,因此Alice就用Bob的公鑰對(duì)明文進(jìn)行加密后傳輸給Bob,Bob收到信息后,使用自己的私鑰對(duì)密文進(jìn)行解密,就可以解密出明文,也就完成了對(duì)Alice的發(fā)來(lái)密文的解密過(guò)程。
目前的公開密鑰算法主要有RSA和ECC,RSA是比較老的算法,基于大質(zhì)數(shù)分解,速度較慢,ECC(橢圓曲線)是最新的公鑰加密算法,基于離散對(duì)數(shù)計(jì)算,速度比RSA快,安全性據(jù)說(shuō)更高一些。
當(dāng)然,上面的所說(shuō)的技術(shù)只是最為基本的身份認(rèn)證技術(shù),只是適合一般網(wǎng)站應(yīng)用,對(duì)于電子商務(wù)和銀行來(lái)說(shuō)需要更為復(fù)雜和權(quán)威的安全認(rèn)證系統(tǒng)。目前比較流行的是PKI技術(shù)。PKI(Public Key Infrastructure)是一種新的安全技術(shù),它由公開密鑰密碼技術(shù)、數(shù)字證書、證書發(fā)放機(jī)構(gòu)(CA)和關(guān)于公開密鑰的安全策略等基本成分共同組成的。PKI技術(shù)已經(jīng)被廣泛應(yīng)用于電子政務(wù)和電子商務(wù),被證明是保證基于互聯(lián)網(wǎng)的電子政務(wù)和電子商務(wù)安全的最佳解決方案。完整的PKI建設(shè)需要大量的資金和人力才能完成,這里就不多介紹了。
聯(lián)系客服