網站的安全登陸認證設計

 
用戶登陸是任何一個應用系統的基本功能,特別是對於網上銀行系統來講,用戶登陸的安全性尤其重要。如何設計一個網站的安全登陸認證程序,是本文主要討論的問題。
  靜態密碼存在着比較多的安全隱患,***者有不少手段得到靜態密碼,管理密碼也具備較高的成本,我在前文《 中國網上銀行系統安全性分析》中曾經論證過,使用硬件安全產品「 動態密碼鎖」或者「 USB Key」能夠較好的解決這個問題,可是會帶來加密鎖的成本,在不增長硬件成本的狀況下,咱們也能夠經過一些設計上的技巧和措施在必定程度上來保證登陸者的身份。
   1、客戶端和服務器端的安全
  客戶端的安全,主要是用戶密碼自己的安全性(密碼長度和複雜性等)以及用戶電腦的安全性,包括用戶電腦沒有安裝******軟件,登陸程序沒有被第三方程序加載調試,用戶錄入框組織鍵盤Hook程序等等,經過一些代碼便可解決。
  服務器端的安全,包括服務器自身的安全(系統漏洞等等)以及程序設計上的安全,我這裏主要講一下程序設計上的安全。最基本的問題是,用戶的密碼不該該直接保存在服務器的數據庫上,也不該該將密碼用單鑰算法加密後保存,最基本的認證方式是經過單向散列函數對密碼進行認證。在《 軟件加密技術和註冊機制》一文中介紹了一些單向散列函數能夠實現簡單的認證。目前大多數網站都使用MD5函數進行登陸認證,不過我推薦使用安全性更高的SHA1散列函數來進行登陸認證。
   2、網絡傳輸上的安全
  目前的網絡協議經過HTTP協議進行通信,存在很大的安全隱患,***能夠經過SNIFFER工具進行抓包分析網絡數據包,所以用戶名和密碼的傳輸應該使用非明文的方式傳輸,這裏就用到了「公開密鑰密碼」的概念。
  學過基本的「 密碼學」的人都應該知道「公開密鑰算法(也叫非對稱算法、雙鑰算法)」這個概念,即用做加密的密鑰不一樣於用做解密的密鑰,並且解密密鑰不能根據加密密鑰計算出來。
  加密的傳輸過程分爲兩部分,一部分爲身份認證,用戶鑑別這個用戶的真僞;另一部分爲數據加密,用於數據的保密。這兩部分功能都須要用到非對稱加密技術。
  首先是身份認證,通信的數據能夠這樣進行處理,將用戶的信息(用戶名、密碼等)用該用戶的私鑰進行加密,而後再進行傳輸,而在服務器端會保存此用戶的公鑰,用此用戶的公鑰對傳過來的信息進行解密,就能夠獲得正確的明文,這樣就完成了一次安全的網絡通信。
  通信過程的示例以下圖所示,Alice用本身的私鑰對明文進行加密後傳輸到服務器,服務器上的用戶(例如Bob)擁有不少用戶的公鑰,所以使用Alice的公鑰對密文進行解密,若是密鑰正確的話,就能夠解密出明文,也就完成了對Alice的身份認證。
  而後是數據加密,數據加密和數據認證正好相反,使用接收方的公鑰對數據進行加密,傳輸的過程當中,即便數據被***截獲,也沒法使用這些密文,接收方收到密文後,用本身的私鑰對密文進行解密,從而完成了一次數據的加密傳輸。
  通信過程的示例以下圖所示,Alice須要發給Bob一段加密的信息,所以Alice就用Bob的公鑰對明文進行加密後傳輸給Bob,Bob收到信息後,使用本身的私鑰對密文進行解密,就能夠解密出明文,也就完成了對Alice的發來密文的解密過程。
  目前的公開密鑰算法主要有RSA和ECC,RSA是比較老的算法,基於大質數分解,速度較慢,ECC(橢圓曲線)是最新的公鑰加密算法,基於離散對數計算,速度比RSA快,安全性聽說更高一些。
  固然,上面的所說的技術只是最爲基本的身份認證技術,只是適合通常網站應用,對於電子商務和銀行來講須要更爲複雜和權威的安全認證系統。目前比較流行的是PKI技術。PKI(Public Key Infrastructure)是一種新的安全技術,它由公開密鑰密碼技術、數字證書、證書發放機構(CA)和關於公開密鑰的安全策略等基本成分共同組成的。PKI技術已經被普遍應用於電子政務和電子商務,被證實是保證基於互聯網的電子政務和電子商務安全的最佳解決方案。完整的PKI建設須要大量的資金和人力才能完成,這裏就很少介紹了。
相關文章
相關標籤/搜索