當前位置:成語大全網 - 新華字典 - 身份認證協議如何設計?

身份認證協議如何設計?

在現實生活中,我們個人的身份主要是通過各種證件來確認的,如身份證、戶口本等。計算機網絡信息系統中,各種計算資源(如文件、數據庫、應用系統等)也需要認證機制的保護,確保這些資源被合法的使用者使用。在大多數情況下,認證機制和授權、審計緊密地結合在壹起。身份認證是對網絡中的主體進行驗證的過程,用戶必須提供他是誰的證明,即證實客戶的身份與其所聲稱的身份是否相符的過程。身份認證往往是許多應用系統中安全保護的第壹道防線,它的失敗可能導致整個系統的失敗。身份認證的依據包括:用戶所知道的信息,例如口令、密鑰等;用戶所擁有的東西,例如身份證、護照、密鑰盤等;用戶的特征,例如指紋、筆跡、聲紋、虹膜、DNA等。

身份認證分為單向認證和雙向認證。如果通信的雙方只需要壹方被另壹方鑒別身份,這樣的認證過程就是壹種單向認證。在雙向認證過程中,通信雙方需要互相確認對方的身份。

基於口令的認證

目前各類計算資源主要靠固定口令的方式來保護。這種以固定口令為基礎的認證方式存在很多問題,對口令的攻擊包括以下幾種。

網絡數據流竊聽。攻擊者通過竊聽網絡數據,非法截獲口令,如下圖所示。大量的通信協議(如Telnet、Ftp、基本HTTP)使用明文口令,這意味著它們在網絡上是以未加密的格式傳輸數據的,而入侵者只需要使用協議分析器就能查看到這些信息,從而得到口令。

認證信息截取/重放。有的系統會將認證的信息進行簡單加密後進行傳輸,如果攻擊者無法用第壹種方式推算出密碼,可以使用截取/重放方式,需要的是重新編寫客戶端軟件,以使用加密口令實現系統登錄,如下圖所示。

字典攻擊。根據調查結果可知,大部分的人為方便記憶選用的密碼都與自己周遭的事物有關,例如:身份證號碼、生日、車牌號碼等。某些攻擊者會使用字典中的單詞來嘗試用戶的密碼。所以大多數系統都建議用戶在口令中加入特殊字符,以增加口令的安全性。

窮舉攻擊。也稱蠻力破解。這是壹種特殊的字典攻擊,它使用字符串的全集作為字典。如果用戶的口令較短,很容易被窮舉出來,因而很多系統都建議用戶使用長口令。窺探。攻擊者利用與被攻擊系統接近的機會,安裝監視器或親自窺探合法的用戶輸入口令的過程,從而獲得口令。冒充欺騙。采用欺騙的方式獲取口令。比如冒充是處長或局長騙取管理員信任得到口令等。冒充合法用戶發送郵件或打電話給管理人員,以騙取用戶口令等。垃圾搜索。攻擊者通過搜索被攻擊者的廢棄物,得到攻擊系統有關的信息,如果用戶將口令寫在紙上又隨便丟棄,則很容易成為垃圾搜索攻擊的對象。

在口令的設置過程中,有許多個人因素在起作用,攻擊者可以利用這些因素來解密。由於口令安全性的考慮,人們會被禁止把口令寫在紙上,因此很多人都設法使自己的口令容易記憶,而這就給攻擊者以可乘之機。

為了加強口令的安全性,可以采取以下措施:

在創建口令時執行檢查功能,如檢查口令的長度、是否是弱口令等。強制使口令周期性過期,也就是定期更換口令。保持口令歷史記錄,使用戶不能循環使用舊口令。

基於口令的認證主要有以下幾種方式:

基於單向函數

計算機存儲口令的單向函數值而不是存儲口令。在這種驗證機制中,用戶的口令在系統中以密文的形式存儲,並且對用戶口令的加密應使得從口令的密文恢復出口令的明文在計算上是不可行的。也就是說,口令壹旦加密,將永不可能以明文形式在任何地方出現。這就要求對口令加密的算法是單向的,即只能加密,不能解密。用戶訪問系統時提供其口令,系統對該口令用單向函數加密,並與存儲的密文相比較。若相等,則確認用戶身份有效,否則確認用戶身份無效。由於計算機不在存儲口令表,所以敵手侵入計算機偷取口令的威脅就減少了。

摻雜口令

如果敵手獲得了存儲口令的單向函數值的文件,采用字典攻擊是有效的。敵手計算猜測的口令的單向函數值,然後搜索文件,觀察是否有匹配的。

Salt是使這種攻擊更困難的壹種方法。Salt是壹隨機字符串,它與口令連接在壹起,再用單向函數對其運算。然後將Salt值和單向函數運算的結果存入主機中。Salt只防止對整個口令文件采用的字典攻擊,不能防止對單個口令的字典攻擊。

S/KEY

Lamport提出了壹個簡單的方法來挫敗在線的口令竊聽。該技術可以看作是壹次性口令機制。這裏,“壹次性”的意思是A發送給H的口令不會重復,但是這些口令在計算上是相關的。這樣,因為從協議的某次執行中竊聽的口令以後不能再用,所以也就成功地防止了口令竊聽。

在用戶初始化時,A的口令記錄設置為(IDA,fn(PA)),其中

fn(PA)=f(…(…(f(PA))…)…)

n是壹個大整數。用戶A只需記住PA。

用戶A和H首次運行口令認證協議,在要求輸入口令時,A的計算設備會要求A輸入PA,然後重復計算f函數n-1次,得到fn-1(PA)。即使當n比較大時也能夠很有效地完成。

在接收到fn-1(PA)以後,H會對接收到的口令執行壹次f運算,得到fn(PA),然後執行正確性檢驗。如果通過檢驗,H就認為接收到的值是fn-1(PA),並且是從PA計算得到的,而該PA是在初始化時設定的,因此通信對方必然是A。這樣A就被允許進入該系統。另外,H將會更新A的口令記錄:用fn-1(PA)替換fn(PA)。

在下次運行這個協議時,A和H會分別使用fn-2(PA)和fn-1(PA),就像前面壹次使用fn-1(PA)和fn(PA)壹樣。所以該協議是有狀態的,它使用了計數器從n遞減到1。當計數器的值是1時,A和H應該重新設置口令。

這種方法要求A和H在口令的狀態上是同步的:當H在fi(PA)狀態時,A必須處於fi-1(PA)狀態。這種同步可能會丟失,例如因為“不可靠”的通信鏈路或主機系統“死機”。應該註意,這裏的“不可靠”或“死機”可能是Malice造成的。

Lamport提出了壹種簡單的方法用於同步丟失時重建同步。本質上,該方法要求系統“向前跳”:如果A在fj(PA)狀態而H在fk(PA),並且j≠k+1,那麽同步就丟失了,此時我們要求系統“向前跳”,H到達fi(PA)狀態,A到達fi-1(PA),其中i≤min(j,k)。很明顯,這種重新同步的機制需要H和A的雙方認證通信。

Lamport基於口令的遠端訪問機制已經被修補成壹次性口令系統,稱為S/KEY。S/KEY機制的修補是為解決不可靠通信問題提出的,該修補要求H為A維護壹個計數器。在用戶初始化時,H保存用戶A的口令記錄(IDA, fc(PA),c),其中c初始化為n。S/KEY機制過程如下:

前提:用戶A和主機H已經設定A的初始口令記錄(IDA, fn(PA),n),其中f是密碼Hash函數;A知道口令PA,H中A的當前口令記錄是(IDA, fn(PA),c),其中1≤c≤n。

目標:A向H認證,同時不以明文形式傳輸PA。

1). A→H:IDA;

2). H→A:c,“輸入口令”;

3). A→H:fn-1(PA);

4). H從其口令文檔中查找記錄(IDA, fc(PA),c);如果f(Q)= fc(PA),就允許它接入,並把A的口令記錄更新為(IDA, Q,c–1)。

(轉載請提前告知)