簡介
在特定的情況下,還需要對接收者進行認證,即要被訪問者的真實性問題。在安全性級別比較高的時候,往往需要進行雙向認證。同時,還要考慮只認證
終端設備即可,還是需要在認證終端設備的時候,同時去認證用戶的合法性問題。這些都牽涉到
身份驗證方案。
發展
現在可行的
身份驗證方案有很多。如基於安全口令的
身份驗證或者基於
數字證書的身份驗證等等。不過有些方案要么過於簡單,存在比較多的漏洞。如雖然很多人喜歡利用口令來作為
用戶認證或者設備證明,但是如果口令設定很簡單,或者不經常更改的話,甚至以明文形式在網路上傳輸,則很容易被人破解。另外一些解決方案就是過濾複雜,實施成本比較高。如基於
數字證書的
身份驗證,則實施起來有一定的難度。
筆者現在在企業中部署的是一種物美價廉的身份驗證解決方案。其也許不是一種最安全的身份驗證方法,但是它是一種性價比比較高的解決方法。它就是S/Key一次性口令系統。
S/Key一次性口令系統是一個基於MD4 和MD5的一次性口令生成方案。他可以對訪問者的身份與設備進行綜合驗證。S/Key協定的操作時基於
客戶端/伺服器端模式。
客戶端可以是任何設備,如普通的PC或者是有移動商務功能的手機。而伺服器一般都是運行Unix系統。
筆者之所以向大家推薦這個解決方案,主要有兩個方面的原因。一是這個
身份認證解決方案,可以有效解決
重放攻擊。
重放攻擊是指攻擊者通過某種方式在網路連線中獲取他人的登入賬戶與口令,然後利用它多某個網路資源的訪問許可權。而現在S/Key協定分配給訪問者的口令每次都不同,所以,就可以有效解決口令泄漏問題。因此,可以避免
重放攻擊。
其次,現在有不少基於這個解決方案的免費工具,也非常的實用。所以,有一定基礎的安全管理人員,可以非常方便的掌握這個解決方案。如此的話,這個S/Key解決方案對於企業來說,可能是免費的。或者只需要添加一些硬體方面的投資即可。
其實從理論上說,S/Key
身份認證很容易實現,只要通過三個步驟就可以輕易實現。
第一步:連線請求人在
客戶端上,往往就是用戶自己的主機,輸入賬戶名。若利用S/Key的專業術語,這個用戶名又叫做通行短語。當用戶打開這個客戶端,S/Key伺服器也同時傳送過來一個種子。這個種子往往是以明文的形式傳輸。
第二步:客戶端會多次
套用安全哈希函式,產生一個64位的安全性口令。通常情況下,客戶端會進行多達98次的哈希函式運算,以提高口令的安全性,增加其破譯難度。哈希是一種加密
校驗和或訊息完整性代碼 (MIC) ,每一方都必須通過計算才能驗證訊息。例如,傳送計算機使用哈希函式和共享
密鑰計算訊息的
校驗和,並在數據包中將其包含進來。接收計算機必須對接收的訊息和共享
密鑰執行同樣的哈希函式,並將其與原始訊息(包含在傳送方的數據包中)加以比較。如果訊息已經在傳輸過程中更改,
哈希值會不同,將拒收數據包。所以,哈希運算本身就是一種安全的口令計算方法。若通過98次的運算而得出的口令,可以說,其安全程度是非常高的。
第三步:輸出函式會把這個64位的一次性口令以明文的形式顯示給用戶。然後用戶在
登入界面中輸入這個一次性口令。登入程式就會把這個口令傳遞給登入伺服器,伺服器就會對此進行驗證。若一致的話,用戶則就可以進行正常的訪問。否則的話,伺服器就會拒絕用戶登入。不過讓用戶手工輸入64位的密碼可能會比較吃力。所以,有些S/Key工具,提供了直接複製貼上的功能,避免了用戶手工輸入的麻煩。
二、缺陷:需要手工進行初始化。
一般在S/KEY伺服器上有一個檔案,它存儲著每個用戶上一次成功登入的一次性口令。伺服器端在進行驗證的時候,會把接收到的一次性口令輸入到安全哈希函式中進行運算。如果運算出來的結果跟上一次的一次性口令一致的話,認證就成功了。然後伺服器就會把這個一次性口令存入到這個表中,等待下一次驗證。
但是,當用戶每進行一次登入,則客戶端執行哈希函式應用程式的個數就會減少一個。也就是說,在
客戶端上生成的一次性口令是有限的,而不是無限制的。S/Key就是通過這種方式保證口令的唯一性。可是,這也會造成用戶的困擾,如當一次性口令用完時,就需要用戶對S/Key服務進行初始化,以避免用戶不能夠重複登入的情況。
當在
客戶端計算一次性口令時,客戶端通行短語可以是任意長度,不過為了安全起見,我們建議最好長度超過8個字元。這些內容都可以在初始化的時候進行設定。若要把設備認人證與
身份認證結合,則可以把設備的一個序列好,如MAC地質等當作通行短語。如此的話,就只有在特定的設備上才能夠登入企業的某個網路套用。
三、建議:根據企業的安全需求選擇不同的商業化產品。
以上只是S/Key 的基本解決方案。若採用免費產品的話,基本上只能夠實現如上的一些基本功能。企業若在安全方面還有比較高的要求,則可以購買一些商業化的產品,來強化S/Key一次性口令在企業中的使用價值。
如有時候管理員會覺得每次要輸入一次性口令會比較麻煩,而且也不想通過複製貼上的方式。則企業就可以購買一些商業的軟體,他們可以實現自動登入。也就是說,會自動把這個哈希函式計算所得的長達64位的一次性口令輸入登入框中,以減少用戶輸入的工作量。這在實際套用中,是很受歡迎的一個功能。
另外,根據使用頻率的不同,每次都需要手工的對
客戶端進行初始化,也是一件很讓人懊惱的事情。在一些商業的S/Key解決方案中,也實現了客戶端的自動初始化功能。如可以每隔一個月或者半年,讓系統自動進行初始化。這個頻率就要企業根據自己的使用情況來確定。當然,也可以讓系統在
一次性密碼用完之後自動初始化。