本發明一般涉及數據處理系統中基于密碼的認證,由此根據用戶密碼的認證來控制對資源的訪問。提供用于認證用戶密碼的多服務器系統,以及用于配置服務器的相應方法,組件服務器和計算機程序。
背景技術:
密碼是用于數據處理系統中的用戶認證的最流行的機制。長期以來,用戶計算機上的網絡釣魚攻擊和按鍵記錄惡意軟件是黑客捕獲大量用戶密碼的首選方法。然而,最近,密碼安全性的主要風險似乎來源于服務器泄漏。僅在2012年,以該方式報告了數千萬個密碼丟失,主要的數據泄露發生在各種流行的網站。
在常規的基于密碼的認證系統中,用戶連接到服務器,所述服務器控制對受保護資源的訪問并且維護用戶ID(例如,用戶名)的數據庫,它們的關聯用戶密碼以散列形式存儲。在接收到用戶ID和輸入密碼時,訪問控制服務器散列輸入密碼并檢查結果是否等于該用戶的存儲密碼散列。然而,可以通過黑客訪問控制服務器(或關聯的密碼散列數據庫)竊取所有密碼散列。由于使用字典或蠻力離線攻擊消息空間的效率,以散列形式存儲密碼提供很少的保護。美國國家標準與技術研究所估計,甚至十六個字符長度的人類可記憶密碼只有30位熵,對應于大約十億種可能的組合。使用可以每秒測試超過八十億種組合的當前的圖形處理器,一旦對密碼數據進行離線攻擊,就應當認為失去安全性。
為了減少通過服務器泄漏暴露于離線攻擊,可以由多個服務器執行基于密碼的認證。其中基于密碼的認證數據在多個服務器之間分割的認證協議是已知的,例如作為認證密鑰交換或認證秘密共享協議的一部分。現有的多服務器密碼認證系統要求用戶計算機與認證協議中的所有服務器交互,原因是認證需要所有服務器的信息。基于雙服務器密碼的認證系統也是已知的。“RSA Distributed Credential Protection”,RSA Security,Whiteepaper 2012,http://www.emc.com/collateral/software/white-papers/h11013-rsa-dcp-0812-wp.pdf,描述了這樣的系統的例子。這里,基于密碼的認證數據在兩個服務器之間拆分。用戶以隨機和拆分形式將其密碼發送到兩個服務器,然后所述兩個服務器交互以驗證密碼,如果密碼正確,則授權訪問。
多服務器密碼認證系統的改進將是非常期望的。
技術實現要素:
本發明的第一方面的實施例提供一種系統,其包括:
訪問控制服務器,用于經由網絡與用戶計算機通信并且根據與相應用戶ID相關聯的用戶密碼的認證來控制用戶計算機對資源的訪問;以及
存儲相應秘密值的多個n個認證服務器,用于經由所述網絡與所述訪問控制服務器通信;
其中所述訪問控制服務器針對每個所述用戶ID存儲通過使用取決于所述秘密值(secret value)的預定算法對與所述ID相關聯的用戶密碼進行加密而產生的第一密文;
并且其中所述訪問控制服務器和認證服務器適配使得響應于從用戶計算機接收到所述用戶ID和輸入密碼,所述訪問控制服務器與多個k≤n個認證服務器通信以實現密碼認證協議,要求k個認證服務器使用它們的相應秘密值,其中通過使用所述預定算法加密輸入密碼來產生第二密文,并且所述訪問控制服務器使用所述第一和第二密文來確定輸入密碼是否等于用于被接收用戶ID的用戶密碼,如果是,則允許由用戶計算機訪問資源。
在體現本發明的系統中,訪問控制服務器提供到資源的訪問點并且也提供用于連接用戶的基于多服務器密碼的認證協議的集中控制。該協議的實現需要k≤n個認證服務器與訪問控制服務器協作,并且這些認證服務器在該過程中必須使用它們的相應秘密值。然而,輸入密碼的有效性由訪問控制服務器基于與k個服務器的通信集中確定。該協議不要求訪問控制服務器(或任何其他服務器)重建用戶密碼。認證基于嘗試使用取決于認證服務器的秘密值的預定加密算法分別從真實用戶密碼和輸入密碼產生的第一和第二密文的使用。體現本發明的系統可以提供安全和有效的基于密碼的認證。用戶計算機僅僅需要與訪問控制服務器通信,并且不以其他方式參與認證協議的實現。本發明的實施例提供抵抗離線攻擊的安全性,并且也允許實現有效的更新機制,由此可以更新秘密值以加強安全性,例如定期或響應已知的安全漏洞。將結合下面描述的具體實施例來說明體現本發明的系統的附加優點。
服務器的秘密值可以包括密碼密鑰,或密鑰共享,或僅為系統中的相應服務器所知的任何其他強秘密。用于生成密文的加密算法可以以各種方式直接地或間接地取決于這些秘密值。例如,秘密值可以在算法中使用,或者算法可以使用密碼密鑰對的公開密鑰,并且秘密值可以包括密鑰對的秘密密鑰的相應密鑰共享。可以通過使用加密算法直接地或在進一步處理輸入密碼以產生其某個功能之后加密輸入密碼而產生第二密文。
在第一優選實施例中,認證協議由訪問控制服務器和k=n個認證服務器實現。第一密文包括從以下導出的偽隨機值:認證服務器的n個秘密值;用戶ID的用戶密碼;和優選地由訪問控制服務器存儲的另外的秘密值。為了在用戶登錄時實現密碼驗證協議,訪問控制服務器以類似于第一密文的方式安排從秘密值和輸入密碼產生第二密文。訪問控制服務器然后簡單地比較第一和第二密文以確定輸入密碼是否等于用于用戶ID的用戶密碼。
在第二優選實施例中,使用用于在密碼密鑰對的公開密鑰下加密用戶密碼的同態加密算法來產生第一密文。認證服務器的秘密值包括密鑰對的秘密密鑰的相應密鑰共享。為了在用戶登錄時實現密碼認證協議,訪問控制服務器使用所述同態加密算法從輸入密碼產生第二密文。訪問控制服務器然后通過經由操作⊙組合第二密文和用于被接收用戶ID的第一密文來產生測試值,操作⊙使得由于所述加密算法的同態性,如果輸入密碼等于用戶密碼,則測試值解密到預定值。將測試值發送到k個認證服務器,所述認證服務器使用它們的秘密密鑰共享以取決于測試值產生相應的解密共享。然后,訪問控制服務器從k個解密共享確定測試值是否解密到所述預定值,并且因此輸入密碼等于用戶密碼。如果同態加密算法是需要小于n個解密共享用于解密的閾值加密算法,則可以使用k<n個認證服務器來實現密碼認證協議。
為了防止離線攻擊的最大安全性,訪問控制服務器在優選實施例的密碼認證協議中將被接收用戶ID發送到每個認證服務器,并且每個認證服務器為每個用戶ID實現節流機制。節流機制在密碼學中是眾所周知的,其提供用于由系統用戶監視登錄的過程,并且基于登錄行為來確定是否應當阻止任何特定用戶帳戶。如果登錄行為滿足指示潛在惡意動作的預定標準,例如,如果在給定時間內進行多于閾值數量的登錄請求和/或使用錯誤密碼,則節流機制通常阻止用戶帳戶。下面詳細描述的第一優選實施例基于用戶登錄頻率實現節流機制。第二優選實施例可以基于登錄頻率和錯誤密碼輸入的組合來實現節流。
在優選實施例中,訪問控制服務器和認證服務器還適配為實現用于用戶帳戶的密碼設置協議。特別地,訪問控制服務器和認證服務器可以適配使得響應于在設置操作中的所述用戶密碼和關聯的用戶ID的初始輸入,訪問控制服務器與n個認證服務器通信以實現密碼設置協議,包括生成用于所述用戶ID的所述第一密文和在所述訪問控制服務器處存儲所述第一密文,從而允許用于所述用戶ID的所述驗證協議的后續實現。優選實施例也提供允許根據需要更新秘密值的有效更新操作。
本發明的第二方面的實施例提供一種服務器,包括存儲器、通信接口和控制邏輯,所述控制邏輯適配配置服務器以實現根據本發明第一方面的系統的訪問控制服務器,其中所述存儲器在使用中存儲用于每個用戶ID的所述第一密文。
本發明的第三方面的實施例提供一種服務器,其包括存儲器、通信接口和控制邏輯,所述控制邏輯適配為配置服務器以實現根據本發明的第一方面的系統的認證服務器,其中所述存儲器在使用中存儲認證服務器的所述秘密值。
本發明的另外方面提供包括程序代碼裝置的計算機程序,所述程序代碼裝置用于使計算機相應地實現根據本發明的第二或第三方面的服務器的控制邏輯。術語“計算機”在最一般的意義上使用,并且包括具有用于執行計算機程序的數據處理能力的任何設備、組件或系統。而且,體現本發明的計算機程序可以構成獨立的程序或程序集,或者可以是更大的程序或程序集的元素,并且可以在諸如用于裝載在計算機中的磁盤或電子傳輸裝置的計算機可讀介質中被提供(例如,體現)。計算機程序的程序代碼裝置可以包括旨在使計算機直接地或在以下之一或兩者之后執行所述方法的指令的任何語言、代碼或符號的任何表達:(a)轉換成另一種語言、代碼或符號,以及(b)以不同的材料形式再現。
本發明的另一方面的實施例提供一種方法,用于在被布置為經由網絡與用戶計算機和多個n個認證服務器通信的訪問控制服務器處根據與相應用戶ID相關聯的用戶密碼的認證來控制用戶計算機對資源的訪問。所述方法包括:
在所述n個認證服務器處存儲相應的秘密值;
對于每個所述用戶ID,在所述訪問控制服務器處存儲通過使用取決于所述秘密值的預定算法對與所述ID相關聯的用戶密碼進行加密而產生的第一密文;
在所述訪問控制服務器處,響應于從用戶計算機接收到所述用戶ID和輸入密碼,與多個k≤n個認證服務器通信以實現密碼認證協議,要求所述k個認證服務器使用它們的相應秘密值,其中通過使用所述預定算法加密輸入密碼來產生第二密文,并且所述訪問控制服務器使用所述第一和第二密文來確定輸入密碼是否等于用于被接收用戶ID的用戶密碼;以及
在所述訪問控制服務器處,如果輸入密碼等于用戶密碼,則允許由用戶計算機訪問資源。
在本文中參考本發明的一方面的實施例描述特征的情況下,可以視情況在本發明的另一方面的實施例中提供對應的特征。
附圖說明
現在將參考附圖通過例子來描述本發明的優選實施例,其中:
圖1是包括體現本發明的密碼認證系統的數據處理系統的示意圖;
圖2指示密碼認證系統的操作中的設置過程的特征;
圖3指示密碼認證系統的操作中的登錄過程的特征;
圖4示出用于實現第一密碼認證協議的密碼認證系統的第一實施例的配置;
圖5a和5b指示第一實施例中的設置協議的步驟;
圖6a和6b指示第一實施例中的密碼認證協議的步驟;
圖7指示第一實施例中的更新協議的步驟;
圖8示出用于實現第二密碼認證協議的密碼認證系統的第二實施例的配置;
圖9指示第二實施例中的設置協議的步驟;
圖10a和10b指示第二實施例中的密碼認證協議的簡單實現的步驟;
圖11a至11c指示第二實施例中的密碼認證協議的更復雜實現的步驟;和
圖12指示第二實施例中解鎖協議的步驟。
具體實施方式
圖1示出了包含體現本發明的認證系統的數據處理系統的簡單例子。大體上用1指示的認證系統包括被布置為經由網絡4與多個用戶計算機3通信的訪問控制服務器2。網絡4通常可以包括一個或多個組件網絡或互聯網絡,包括因特網。用戶計算機3在該例子中是通用個人計算機(PC),但是同樣可以由諸如移動電話、平板計算機、個人音樂播放器、掌上型設備等的其他計算機設備實現。訪問控制服務器2控制由用戶計算機3訪問資源,在該例子中是數據庫5。根據與相應用戶ID(例如用戶名,其由在操作中由用戶經由PC 3輸入)相關聯的用戶密碼的認證允許訪問。
認證系統1也包括標記為S1,S2,...,Sn的多個認證服務器6,其被布置為經由網絡4與訪問控制服務器2通信。n個認證服務器6適配為與訪問控制服務器2協作以實現下面詳述的多服務器密碼認證協議。認證服務器的數量n可以針對不同的實施例而變化,但是典型的系統可以取決于特定的密碼認證協議和所需的安全級別使用兩個到十個之間的認證服務器。一般而言,認證服務器6可以位于與訪問控制服務器2相同的位置處,或者位于一個或多個不同的位置處,并且可以由與訪問控制服務器相同的實體或由一個或多個不同的實體控制。因此可以根據給定系統的特定安全要求來選擇服務器2、6的分布和控制。
訪問控制和認證服務器2、6的每一個可以體現為配置成實現相應服務器功能性的通用計算機。訪問控制服務器2在這里簡單地顯示為包括用于在網絡4上通信的通信接口(I/F)7,控制邏輯8,和存儲器9。控制邏輯8一般控制服務器2的操作,并且提供用于實現下面詳述的密碼認證和相關協議的步驟的功能性。存儲器9存儲在操作中由控制邏輯使用的各種數據。這包括用于系統的每個授權用戶的用戶ID(Uid)的第一密文CT1。每個認證服務器6類似地顯示為包括通信接口11,提供用于在下面詳述的協議中使用的功能性的認證邏輯12,以及存儲在操作中由邏輯12使用的數據的存儲器13。這包括僅為系統中的特定服務器Si所知的秘密值vi。一般而言,控制邏輯8和認證邏輯12可以以硬件或軟件或其組合來實現。在該例子中,邏輯8、12方便地通過在相應計算機2、6上運行以便使計算機執行所述功能的軟件來實現。
圖2是指示用于在密碼認證系統1的操作中設置用戶帳戶的設置過程的關鍵特征的一般化框圖。在如步驟20所示的設置操作開始時,將用于用戶的后續認證的用戶ID Uid和關聯的用戶密碼pwd在步驟21中被輸入到訪問控制(AC)服務器2。在典型的應用中,用戶ID和密碼在這里經由用戶計算機3輸入,并且經由網絡4發送到AC服務器2。AC服務器在步驟22中通過激發密碼設置協議來響應。該協議經由AC服務器2和n個認證服務器Si至Sn的通信來實現。設置協議包括生成用于輸入用戶ID的第一密文CT1,如步驟23所示。通過使用取決于n個認證服務器的秘密值v1至vn的預定算法對用戶密碼pwd進行加密來產生密文CT1。這將在下面進一步說明。第一密文CT1由具有用于授權用戶的用戶ID Uid的AC服務器2存儲,如步驟24所示。n個認證服務器6存儲用戶ID Uid(典型地具有由下面進一步討論的節流機制控制的一個或多個其它項,例如“帳戶封鎖”標志),如步驟25所示。應當注意,步驟24和25的順序可以在不同實現方式中變化,如下所示。然后密碼設置協議完成,并且用戶帳戶準備好在隨后的登錄過程中使用。
圖3是給出密碼認證系統1的操作中的登錄過程的概述的一般化框圖。當操作用戶計算機3的用戶輸入密碼pwd'(即,嘗試用戶密碼pwd)和用戶ID Uid時,登錄過程在步驟30開始。在步驟31中輸入Uid、pwd'在網絡4上被發送并且由AC服務器2接收。在步驟32中AC服務器通過激發用于認證輸入密碼pwd'的驗證協議來響應。該密碼認證協議經由AC服務器2與多個k≤n個認證服務器S1至Sn的通信來實現,其中k的值取決于特定協議實現。協議的成功操作要求k個認證服務器使用它們的相應秘密值vi,如圖中的框33所示。協議包括生成第二密文CT2,如框34所示。通過使用在設置協議中用于產生第一密文CT1的算法對輸入密碼pwd'進行加密在系統1中產生第二密文CT2。AC服務器2然后使用第一和第二密文CT1、CT2在步驟35中確定輸入密碼pwd'是否等于在步驟31中接收的用于用戶ID的用戶密碼pwd。如果是(在決策框36處為“是”),則AC服務器2允許用戶訪問數據庫5,如步驟37所示,并且登錄過程完成。如果輸入密碼pwd'無效(在決策框36處為“N”),則AC服務器2在步驟38拒絕訪問并且可以相應地通知用戶。再次應當注意,由圖3的框指示的步驟的該順序可以在不同實現方式中變化,如下面的例子所示。
現在將參考圖4至7詳細描述適配實現第一密碼認證協議的認證系統1的第一實施例。第一密碼認證協議基于使用偽隨機函數和XOR(即模2加法)運算的對稱密碼術。圖4示出該實施例中的系統服務器的初始配置。n個認證服務器S1至Sn的每一個存儲由k1i和k2i表示的兩個對稱密鑰。(這里的密鑰k2i對應于上面討論的秘密服務器值,這里使用的密鑰k1i可以由任何唯一服務器ID替換,如下面進一步討論)。在該實施例中,AC服務器存儲另外的秘密值,這里由kAC表示的另外的對稱密鑰。該系統通過服務器2、6之間的安全通信,即經由具有前向保密的認證和保密信道來操作。這些性質可以以已知的方式實現,例如使用SSL(安全套接層)或TLS(傳輸層安全)協議。
設置協議實施例#1
圖5a和5b指示該實施例中的設置協議的連續階段。如圖5a中的(a)所示,當用戶經由用戶PC 3向AC服務器2提供用戶ID Uid和用戶密碼pwd時,操作開始。在步驟(b)中,AC服務器2的控制邏輯8產生初始偽隨機值tin,其經由偽隨機函數PRF加密用戶密碼pwd。初始偽隨機值tin也加密AC服務器的秘密密鑰kAC和(為了避免在不同用戶選擇相同密碼時的沖突)用戶ID Uid。具體地在該例子中,將初始偽隨機值tin計算為
tin←PRF(PRF(kAC,Uid),pwd)。
在步驟(c)中,AC服務器經由通信接口7和網絡4將用戶ID Uid和初始偽隨機值tin發送到n個認證服務器S1至Sn。值(Uid,pwd)由每個認證服務器6的認證邏輯12經由通信接口11接收。
在圖5a中的(d)所示的下一步驟中,每個服務器Si的認證邏輯12使用初始偽隨機值tin來產生相應的第一偽隨機值t1i。該第一偽隨機值包括相應的第二和第三偽隨機值t2i和t3i的模2和。第二偽隨機值t2i經由偽隨機函數PRF加密初始偽隨機值tin。第二偽隨機值t2i還經由偽隨機函數PRF對相應認證服務器的服務器ID進行加密,其中服務器密鑰k1i在這里構成服務器ID。第三偽隨機值經由偽隨機函數PRF加密認證服務器Si的秘密值vi=k2i和被接收用戶ID Uid(其與在初始偽隨機值tin中加密的用戶密碼相關聯)。具體地:
t1i←t2i⊕t3i
←PRF(k1i,tin)⊕PRF(k2i,Uid)。
其中⊕表示模2加法(modulo-2)(XOR)運算。該公式中的第二項t3i為下面進一步討論的主動更新過程提供基礎。
在如圖5b中的(e)所示的設置操作的下一階段中,每個認證服務器Si將其相應的第一偽隨機值t1i發送到AC服務器2。然后,AC服務器2的控制邏輯8從n個第一偽隨機值t1i產生第一密文CT1。在該實施例中由tpwd表示的第一密文CT1由下式給出:
tpwd=t11⊕t12⊕t13…⊕t1n。
因此將看到,該實施例中的第一密文包括n個第一偽隨機值t1i的模2和,每個第一偽隨機值經由偽隨機函數加密相應認證服務器的秘密值k2i和初始偽隨機值tin,其又對用戶密碼pwd和AC服務器2的秘密值kAC進行加密。
如圖5b中所示,在用于該用戶的設置協議結束時,AC服務器2將用于用戶ID Uid的第一密文tpwd存儲在其存儲器9中。每個認證服務器6的存儲器13存儲Uid和指示用戶帳戶是被封鎖(b=1)還是打開(b=0)的“帳戶封鎖”位b={0,1}。最初,該位設置為b=0。單個偽隨機值tin、t1i未被任何服務器2、6存儲,并且在用于設置用戶帳戶之后被刪除。
密碼認證協議實施例#1
在用戶帳戶的后續登錄中,AC服務器2與k=n個認證服務器6通信以實現密碼認證協議。圖6a和6b指示該實施例中的密碼認證協議的連續階段。如圖6a中的(a)所示,當用戶提供用戶ID Uid并經由用戶PC 3輸入用戶密碼pwd'時,操作開始。在接收到值(Uid,pwd')時,AC服務器2檢查用戶記錄(Uid,tpwd)是否存在于存儲器9中。如果否,則登錄失敗。如果是,則后續操作大體上對應于以上的設置協議,但是使用輸入密碼pwd'。因此,在步驟(b)中,AC服務器邏輯使用輸入密碼pwd'來產生對應于初始偽隨機值tin的測試偽隨機值ttest。因此,以類似于初始偽隨機值tin的方式產生測試偽隨機值ttest,但是使用輸入密碼pwd'而不是用戶密碼pwd。在步驟(c)中,AC服務器將測試偽隨機值ttest發送到具有被接收用戶ID Uid的每個認證服務器S1至Sn。此時,如步驟(d)所示,每個認證服務器6檢查用戶帳戶是否由于節流機制的操作已被封鎖(即,用于Uid的標志b設置為b=1)。特別地,每個服務器6的認證邏輯12適配為基于用戶登錄請求的頻率實現用于每個用戶ID Uid的節流機制。各種這樣的節流措施在本領域中是已知的,并且在這里可以采用任何適宜的技術。例如,如果超過閾值數量的登錄請求被接收或在給定時間限制內被接收,則可以封鎖賬戶。替代地或附加地,例如,如果識別出可疑登錄行為,例如如果超過請求的特定數量或頻率,則對于服務用戶請求可以應用逐漸增加的時間限制。因此,節流機制可以臨時地或永久地封鎖用戶帳戶,后者需要取決于特定實現方式由授權方或用戶帳戶的更新解鎖。在任何情況下,如果用戶帳戶在任何認證服務器6處被封鎖,則登錄操作失敗。如果沒有服務器封鎖用戶帳戶,則登錄操作可以繼續。
在如圖6b中的(e)所示的認證協議的下一階段中,每個認證服務器Si使用測試偽隨機值ttest來產生對應于以上的第一偽隨機值t1i的相應服務器偽隨機值tsi。也就是說,服務器偽隨機值tsi以類似于第一偽隨機值t1i的方式產生,但是使用測試偽隨機值ttest代替初始偽隨機值tin。因此:
tsi←PRF(k1i,ttest)⊕PRF(k2i,Uid)。
在步驟(f)中,每個認證服務器Si將其服務器偽隨機值tsi發送到AC服務器2。在步驟(g)中,AC服務器從n個服務器偽隨機值tsi產生第二密文CT2。在該實施例中由tpwd'表示的第二密文CT2因此由下式給出:
tpwd'=ts1⊕ts2⊕ts3…⊕tsn。
為了確定輸入密碼是否有效(pwd'=pwd),AC服務器邏輯簡單地比較步驟(h)中的第一和第二密文以確定是否tpwd'=tpwd。如果是,則登錄成功并且AC服務器授權用戶訪問資源5。如果否,則登錄失敗并且拒絕訪問。
以上密碼認證協議在AC服務器的所有n個認證服務器之間執行。其中攻擊者可以在短時間內獲得對服務器的完全控制并且奪取由損壞的服務器維護的所有信息(包括秘密密鑰)的“強行奪取”攻擊將不會破壞安全性,原因是所有服務器的秘密密鑰需要認證過程。只要至少一個服務器2、6仍然誠實,密碼就是安全的。例如,只要不超過n-1個認證服務器和AC服務器被攻擊者損壞,攻擊者就不能重建密碼或對積累的認證數據運行脫機攻擊。攻擊者將需要來自剩余的誠實服務器的支持來測試所有密碼組合,并且這將由于節流機制而被誠實服務器識別和阻止。在該實施例中僅僅經由對稱密碼法實現安全性,其快速和簡單并且在實現效率方面提供顯著的優點。而且,系統不需要用戶計算機3處的任何專用客戶端軟件,并且用戶計算機僅僅需要與AC服務器通信以用于系統的操作。該系統也允許實現用于更新服務器密鑰的有效的主動安全機制。該更新機制不需要與用戶進行任何交互。現在將參考圖7說明更新協議。
更新協議實施例#1
AC服務器2和每個認證服務器6適配為實現更新協議,其中認證服務器將其相應的秘密值vi=k2i更新為新的秘密值k2'i。該協議可以由AC服務器對所有認證服務器定期地運行以進一步增強對連續服務器損害的安全性。另外,該協議可以用于在已知的破壞之后重新建立完整的安全性。如果AC服務器2受到損害,則更新協議將包括所有服務器。單個認證服務器上的安全漏洞僅僅需要由AC服務器和受影響的認證服務器實現協議。以下集中于單個認證服務器的操作,其可以根據需要擴展到所有n個服務器。
AC服務器將記錄應當被更新的所有Uid值發送到認證服務器6。認證服務器6將其相應的秘密值vi=k2i更新為新的秘密值k2'i,并且對于每個用戶ID Uid使用新的秘密值k2'i來產生對應于以上的第三偽隨機值t3i的更新的偽隨機值tui。也就是說,如圖7中的步驟(a)所示,認證服務器6選擇新的密鑰k2'i,并且然后將更新的偽隨機值tui計算為:
tui←PRF(k2'i,Uid)。
認證服務器然后產生更新值ui,其包括更新的偽隨機值tui和第三偽隨機值t3i的模2和:
ui←PRF(k2'i,Uid)⊕PRF(k2i,Uid)。
在步驟(b)中,認證服務器將用于每個Uid的更新值ui發送到AC服務器2。在步驟(c)中,AC服務器2通過產生第一密文tpwd和更新值ui的模2和來更新為每個Uid存儲的第一密文tpwd。因此新的第一密文由下式給出:
t'pwd=tpwd⊕ui。
(如果所有服務器密鑰被更新,則新的第一密文將因此由t'pwd=tpwd⊕u1⊕u2...⊕un給出。按照要求,然后新的第一密文是值的模2和:
t'pwd←PRF(k1i,tin)⊕PRF(k2'i,Uid)。
由于模2加法而抵消舊隨機PRF(k2i,Uid),由此丟失的k2i變得無用。新的第一密文然后由AC服務器存儲用于用戶ID。
現在將參考圖8至12詳細描述適配為實現第二密碼認證協議的認證系統1的第二實施例。第二密碼認證協議基于同態閾值加密方案。圖8示出該實施例中的系統服務器的初始配置。AC服務器2存儲密碼(公開/秘密)密鑰對的公開密鑰tpk。由認證服務器Si存儲的秘密值包括該密鑰對的秘密密鑰的相應密鑰共享tski。如前所述,該系統通過服務器2、6之間的安全通信操作。
設置協議實施例#2
圖9指示在該實施例中創建用戶帳戶的設置協議的步驟。操作開始于步驟(a),其中將用戶ID Uid和用戶密碼pwd輸入到AC服務器2。在步驟(b)中,AC服務器使用在公開密鑰tpk下對密碼pwd進行加密的同態閾值加密算法TEnctpk產生第一密文CT1。閾值加密算法TEnctpk需要p<n個解密共享用于解密,如下面更詳細地說明。在該實施例中由Cpwd表示的第一密文CT1因此由下式給出:
Cpwd=TEnctpk(pwd)。
加密算法TEnc是同態的,即存在對密文C的有效操作⊙,使得如果C1∈TEnctpk(m1)并且C2∈TEnctpk(m2),則C1⊙C2∈TEnctpk(m1.m2)。(我們也將使用指數來表示⊙的重復應用,例如用C2表示C⊙C。AC服務器存儲用于用戶ID Uid的第一密文Cpwd,并且在步驟(c)中,將Cpwd與Uid發送到n個認證服務器S1至Sn。每個認證服務器Si將Uid與該例子中的Cpwd和如上所述用于節流機制的帳戶封鎖位b(初始設置為b=0)一起存儲。
密碼認證協議實施例#2
在用戶帳戶的后續登錄中,AC服務器2與k=p個認證服務器6通信以實現密碼認證協議。首先將參考圖10a和10b描述該協議的簡單實現。這些指示密碼認證協議的操作的連續階段。如圖10a中的(a)所示,該過程開始于向AC服務器2提供用戶ID Uid和輸入密碼pwd'。如果用于Uid的用戶記錄存在于存儲器9中,則在步驟(b)中AC服務器使用同態加密算法從輸入密碼產生第二密文CT2=Cpwd'。在該初始例子中,由Cpwd'表示的第二密文由下式給出:
Cpwd'=TEnctpk(pwd')。
在步驟(c)中,AC服務器然后通過經由操作⊙組合第二密文Cpwd'和為被接收Uid存儲的第一密文Cpwd產生測試值Ctest。在該初始例子中,操作⊙表示除法,由此:
Ctest=Cpwd/Cpwd'。
由于如上所述的加密算法的同態性,如果輸入密碼pwd'等于與被接收Uid相關聯的用戶密碼pwd,則測試值解密到預定統一值。接下來,在步驟(d)中AC服務器將測試值Ctest與Uid發送到k=p個認證服務器6。p個認證服務器可以在這里以任何適宜的方式被選擇作為響應或執行n個認證服務器6之間的負載平衡方案的第一p個服務器。
在如圖6b中的(e)所示的該認證協議的下一階段中,每個認證服務器Si通過由如上所述的服務器邏輯實現的節流機制(throttling mechanism)來檢查用戶帳戶是否已被封鎖(對于Uid,b=1)。如果用戶帳戶在任何認證服務器6處被封鎖,則登錄操作失敗。如果p個服務器都沒有封鎖用戶帳戶,則登錄操作可以繼續。在該情況下,如步驟(f)所示,每個認證服務器Si使用其相應的密鑰共享tski以取決于測試值Ctest產生解密共享di。在該簡單例子中,在步驟(g)中服務器簡單地使用其密鑰共享tski解密Ctest并且將用于Uid的所得到的解密共享di發送到AC服務器。在步驟(h)中,訪問控制服務器通過從k個解密共享d1…dk確定測試值是否解密到統一,即是否:
TDec(Ctest,d1…dk)=1
確定輸入密碼是否等于用戶密碼,其中TDec是如下面進一步討論的用于閾值加密方案的解密算法。如果是,則允許訪問。如果pwd'≠pwd,則解密結果將是隨機數,并且將拒絕訪問。
現在將參考圖11a至11c描述第二密碼認證協議的更詳細實現方式。該例子包含對以上簡單例子的各種改進,并且允許節流考慮較早的用戶登錄嘗試是否成功。首先給出閾值描述方案的簡要描述以幫助理解所遵循的協議。
閾值加密:閾值加密方案由四個算法(EKGen;TEnc;PDec;TDec)組成。密鑰生成算法EKGen取輸入(1λ,t,n),其中t表示容忍的惡意服務器的最大值,并且輸出主公開密鑰tpk和n個部分密鑰對(tpk1,tsk1),…,(tpkn,tskn)。加密算法TEnc在輸入公開密鑰tpk和消息m時輸出密文C。部分解密算法PDec在輸入秘密密鑰共享tski、公開密鑰共享tpki和密文C時輸出解密共享di。閾值解密算法TDec在輸入C、tpk和k≥t+1個解密共享d1…dk時輸出明文m或⊥(錯誤)。各種這樣的閾值加密方案是已知的,示例性結構在以下文獻中描述:Y.Desmedt,Y.Frankel,“Threshold Cryptosystems”,Desmedt&Y.Frankel,CRYPTO 1989。
在上述設置協議之前,AC服務器2為所有n個認證服務器6創建閾值密鑰。也就是說,它創建密鑰
(tpk,(tpk1,tsk1),…,(tpkn,tskn))←EKGen(1λ,t,n)。
秘密密鑰共享tski被加密發送到每個服務器Si。主公開密鑰tpk和公開密鑰共享tpki在系統中是公知的。另外,每個認證服務器6也創建用于消息認證方案(MAC)的密鑰ki,其將在用于節流帳戶的解鎖測試中被使用,如下所述。
用于用戶帳戶的設置協議如參考圖9所述。在密碼認證協議中,AC服務器2與p=t+1個認證服務器6通信,其中t由以上的閾值加密方案限定。在圖11a至11c中在其操作在圖的左側指示的AC服務器2與其操作在右側指示的每個認證服務器6之間的交互方面指示密碼認證協議。
當用戶向AC服務器2發送Uid和輸入密碼pwd'時,操作在圖11a中的步驟(a)開始。如果對于Uid存在用戶記錄,則AC服務器繼續使用同態加密算法從輸入密碼計算第二密文CT2=Cpwd'。在該例子中,通過將同態加密算法應用于輸入密碼的函數F來產生第二密文Cpwd',其中F(x)=1/x。因此:
Cpwd'=TEnctpk(1/pwd')。
這確保惡意AC服務器不能在認證協議中再次簡單地使用第一密文Cpwd作為第二密文Cpwd'。然后通過經由操作⊙組合Cpwd'和Cpwd產生測試值Ctest,其中在該情況下⊙表示乘法:
Ctest=Cpwd⊙Cpwd'=Cpwd⊙TEnctpk(1/pwd')。
由于如上所述的加密算法的同態性,如果pwd'=pwd,則測試值再次解密到統一。接下來,在步驟(c)中AC服務器2生成用于證明測試值Ctest包括第二密文Cpwd'以及用于用戶ID的第一密文Cpwd的密碼證明Π:
Π←NIZK{(pwd'):Ctest=(Cpwd⊙TEnctpk(1/pwd'))}(Ctest)。
(這里“NIZK”表示“非交互零知識”,其中“零知識”指示證明者僅僅顯示需要證明的東西,“非交互”意味著證明的認證不需要證明者和認證者之間的交互。這樣的證明可以以已知的方式實現,并且用于實現證明的合適的協議對于本領域技術人員將是顯而易見的。特別地,證明Π允許認證測試值Ctest包括用于Uid的正確的第一密文Cpwd和從輸入密碼的函數F正確計算的第二密文Cpwd'。在步驟(d)中,AC服務器然后將用戶ID和證明Π發送到具有測試值Ctest的k=t+1個認證服務器6。
參考圖11b,每個認證服務器Si在步驟(e)中接收(Uid,Π,Ctest),并且然后在步驟(f)中檢查用于Uid的帳戶未被封鎖,即b=0。在步驟(g)中,服務器Si認證證明Π以(Uid,Π,Ctest)相對于其本地存儲值(Uid,Cpwd)是正確的。如果測試步驟(f)或(g)失敗,則用戶登錄失敗(受到下面討論的解鎖協議的操作)。假設兩個測試都通過,則服務器Si在步驟(h)中繼續以計算隨機化值Ci,對于隨機選擇的ri,所述隨機化值包括測試值的相應隨機指數ri次冪:
Ci=(Ctest)ri
然后每個服務器存儲Ci并且在步驟(i)中通過將散列值hi發送到AC服務器提交該值,其中:
hi←H(Ci,Uid)
并且H表示密碼散列函數。當AC服務器已接收到所有k=t+1個散列值時,它在步驟(j)中將它們作為(h1,h2,…,ht+1)轉發到所有服務器S1至Sk。k個服務器現在通過在步驟(k)中將它們發送到AC服務器來顯示它們的隨機化值Ci。當AC服務器已接收到所有k=t+1個隨機化值Ci時,它在步驟(l)中將它們作為(C1,C2,…,Ct+1)轉發到所有服務器S1至Sk。
參考圖11c,每個認證服務器Si在步驟(m)中接收(C1,C2,…,Ct+1),并且在步驟(n)中檢查是hi=H(Ci,Uid)。如果是,則在步驟(o)中服務器Si經由操作⊙(這里是乘法)組合k=t+1個隨機化值Ci的集合,以產生隨機化密文CR,并且使用其相應的密鑰共享tski從隨機化密文CR產生解密共享di:
CR←⊙i=1,…t+1Ci
di←PDectski(tpki,CR)
在步驟(p)中,服務器Si將(di,si)發送到AC服務器2,其中si=MACki(Uid,CR)使用其密鑰ki用于消息認證方案。當AC服務器已接收到所有k=t+1個服務器的解密共享和MACs(di,si)時,它使用閾值解密算法TDec從解密共享確定隨機化密文CR是否解密到統一,并且因此pwd'=pwd。這是由于如果測試值Ctest=1,則隨機化值Ci=1,由此由于同態性,如果pwd'=pwd,則隨機化密文CR解密到與測試值相同的值,即統一。因此,在步驟(q)中,AC服務器2計算:
CR←⊙i=1,…t+1Ci并且
x←TDectpk(CR,{di}i=1,…t+1)
如果x=1,則密碼匹配并且授權訪問,否則登錄失敗。
在以上過程中,AC服務器保持所有解密共享和MAC值(di,si)一段時間,以允許隨后向認證服務器證明登錄成功。特別地,以上協議中的步驟(h)至(p)允許認證服務器在封鎖用戶帳戶之前檢查在最后登錄嘗試中的輸入密碼的正確性。在用于Uid的后續登錄中由于節流機制而封鎖帳戶之前,認證服務器與訪問控制服務器通信以實現“解鎖協議”。現在將參考圖12描述解鎖協議。
解鎖協議
在圖12的左側和右側分別指示在解鎖協議中由AC服務器2和認證服務器6執行的操作。如果服務器Si注意到太多的登錄嘗試并且將要封鎖用于Uid的用戶帳戶,則服務器將證明請求發送到AC服務器,請求證明最后登錄成功,即隨機化密文CR解密到統一。當在圖12的步驟(a)中發送這樣的請求時,如果最后登錄成功,則AC服務器檢索值(Uid,CR,si,{di}i=1,…t+1)并且將在步驟(b)中將這些值發送到認證服務器。如果最后登錄失敗,則AC服務器改為發送值(Uid,fail)。在步驟(c)中,服務器Si認證si=MACki(Uid,CR)和TDectpk(CR,{di}i=1,…t+1)。只有當兩個測試都成功時服務器才保持用于Uid的帳戶打開。因此,在步驟(d)中適當地設置帳戶封鎖位b,并且協議完成。
可以看出,以上系統允許基于密碼檢查以及登錄頻率的節流。另外,該實施例的n個認證服務器還適配為實現用于更新n個密鑰共享tski的共享更新協議。這可以使用主動秘密共享技術以已知方式實現,其例子在以下文獻中描述:“Proactive Secret Sharing Or:How to Cope With Perpetual Leakage”,Herzberg等人,CPYPTO 1995。使用這樣的技術,服務器6將定期地和/或每當攻擊者可能已得知秘密密鑰共享時為其秘密密鑰共享運行共享更新協議。每次更新后,舊共享將被刪除。主動安全性由此確保在一方面新的秘密密鑰共享tski仍然與主公開密鑰tpk“兼容”,而在另一方面它們與攻擊者可能已獲取的舊秘密共享“不兼容”。
在以上實施例中,只要至多t個服務器(和DS)被破壞,控制那些服務器的攻擊者就不能檢索密碼,例如通過對Cpwd進行脫機攻擊。這來自閾值加密方案的安全性,其保證如果攻擊者保持最多t個閾值秘密密鑰的共享,則Cpwd不能被解密。提供對DS內部攻擊的安全性,原因是在登錄協議期間服務器僅僅解密(值統一的)密碼商而不是原始密碼pwd或密碼嘗試pwd'。因此,惡意DS不能簡單地觸發加密密碼的解密,而是必須針對每個密碼猜測運行完全登錄協議。由于誠實服務器中的節流機制,這樣的攻擊將在幾次嘗試之后被識別和封鎖。該基于閾值的方案甚至可以容忍多達t臺服務器的長期損壞,從而可以將服務器外包到不同的信任域。登錄特別有效,原因是只需要n個認證服務器中的t+1個進行密碼認證。如前所述,系統的操作對于僅需要在所有協議中與AC服務器2通信的用戶是完全透明的。
盡管已描述了示例性實施例,但是可以設想許多替代和修改。例如,在以上第一實施例的其他實現方式中,用于t2i的以上公式中的密鑰k1i可以由PRF(k1i,Uid)代替。而且,由于系統安全性不取決于該特定值,因此密鑰k1i可以由任何唯一服務器ID替換,并且不需要是加密強的秘密。而且,需要時第二實施例中的閾值加密方案可以要求t+1=n個共享用于解密,由此所有n個服務器6將用于密碼認證。
應當理解,由訪問控制服務器2保護的資源一般可以包括用戶訪問被限制的任何資源,例如,應用、服務、數據、設備、網絡或任何其他設施或設施的組合。而且,以上實施例中的服務器的功能性一般可以在單個機器中實現或分布在多個機器上。也可以設想實施例,其中由以上設置協議生成的用戶賬戶數據預加載在各種服務器中。
在不脫離本發明的范圍的情況下可以對所描述的示例性實施例進行許多其它變化和修改。
本發明可以是系統、方法和/或計算機程序產品。計算機程序產品可以包括計算機可讀存儲介質,其上載有用于使處理器實現本發明的各個方面的計算機可讀程序指令。
計算機可讀存儲介質可以是可以保持和存儲由指令執行設備使用的指令的有形設備。計算機可讀存儲介質例如可以是――但不限于――電存儲設備、磁存儲設備、光存儲設備、電磁存儲設備、半導體存儲設備或者上述的任意合適的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態隨機存取存儲器(SRAM)、便攜式壓縮盤只讀存儲器(CD-ROM)、數字多功能盤(DVD)、記憶棒、軟盤、機械編碼設備、例如其上存儲有指令的打孔卡或凹槽內凸起結構、以及上述的任意合適的組合。這里所使用的計算機可讀存儲介質不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸的電信號。
這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質下載到各個計算/處理設備,或者通過網絡、例如因特網、局域網、廣域網和/或無線網下載到外部計算機或外部存儲設備。網絡可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網關計算機和/或邊緣服務器。每個計算/處理設備中的網絡適配卡或者網絡接口從網絡接收計算機可讀程序指令,并轉發該計算機可讀程序指令,以供存儲在各個計算/處理設備中的計算機可讀存儲介質中。
用于執行本發明操作的計算機程序指令可以是匯編指令、指令集架構(ISA)指令、機器指令、機器相關指令、微代碼、固件指令、狀態設置數據、或者以一種或多種編程語言的任意組合編寫的源代碼或目標代碼,所述編程語言包括面向對象的編程語言—諸如Smalltalk、C++等,以及常規的過程式編程語言—諸如“C”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨立的軟件包執行、部分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機或服務器上執行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡—包括局域網(LAN)或廣域網(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態信息來個性化定制電子電路,例如可編程邏輯電路、現場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執行計算機可讀程序指令,從而實現本發明的各個方面。
這里參照根據本發明實施例的方法、裝置(系統)和計算機程序產品的流程圖和/或框圖描述了本發明的各個方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現。
這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,使得這些指令在通過計算機或其它可編程數據處理裝置的處理器執行時,產生了實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質中,這些指令使得計算機、可編程數據處理裝置和/或其他設備以特定方式工作,從而,存儲有指令的計算機可讀介質則包括一個制造品,其包括實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的各個方面的指令。
附圖中的流程圖和框圖顯示了根據本發明的多個實施例的系統、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現規定的邏輯功能的可執行指令。在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發生。例如,兩個連續的方框實際上可以基本并行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。