專利名稱:提供斷開鑒別的系統和方法
技術領域:
總的來說,本發明涉及密碼術,具體而言,涉及用于計算機安全的系統。
背景技術:
正如本領域所公知的,存在各種各樣的系統用于相對計算機和/或計算機網絡來鑒別用戶。例如,要登陸一臺計算機,用戶通常要鍵入口令。但是,正如本領域所公知的,僅靠口令的系統只能提供有限的安全級別。
其它已知的鑒別系統需要兩種識別要素。一種這樣的系統是由美國麻省Bedford的RSA安全公司提供的RSA SECURID系統。通常,該系統需要用戶從他擁有的鑒別令牌(token)形式的裝置輸入字母-數字個人身份號碼(PIN)和數據。服務器驗證所述令牌中服務器知道的用戶PIN及安全數據。該RSA SECURID系統已經在授予Weiss的4,720,860號美國專利中概括描述,在這里將其引入作為參考。
鑒別令牌,例如RSA SECURID令牌,對于通過不安全通道相對于服務器來鑒別用戶而言正變得越來越普遍。鑒別令牌優于使用標準口令的好處是多方面的,主要有減少了遭到假冒攻擊的風險。假冒攻擊是指未被授權人員企圖通過安全服務器的鑒別,從而訪問例如公司網。
典型情況下,鑒別令牌與鑒別服務器,例如RSA安全ACE服務器,共享一些信息,這些信息一般不被其它實體所知,并且利用這些信息能夠產生和驗證某些鑒別字符串的至少一部分。該鑒別字符串通常還包括所述令牌的擁有者記住并同時存儲在服務器上的某些信息,或者是這些信息的函數。為了產生這一鑒別字符串,該鑒別可以是交互的,例如,詢問一響應形式,或者是非交互的,例如不從服務器向用戶/令牌發送任何信息。
目前,構成鑒別嘗試的所述信息是通過某些有可能不安全的通信線路發送的,例如通過無線或者有線網絡進行發送。在一種普通情形里,擁有鑒別令牌的用戶希望訪問由服務器控制的某些資源。可以假定該服務器對于攻擊是安全的,因而也可以假定由該服務器存儲的秘密信息的安全不會遭到破壞,并且不可能被用于假冒該用戶的目的。上述資源可以是例如數據庫、電子郵件賬號、存儲單元或者處理能力。可以假定該資源不需要存儲對于產生鑒別字符串有用的任何信息,除非該資源與執行驗證的服務器相同。
雖然這些系統對于結合遠程鑒別服務器的用戶鑒別來說是有效的,但是當所述鑒別服務器無法使用的時候這些系統可能無效,或者當想要訪問的資源是令牌擁有者所擁有的計算機的時候這些系統不實用。在這種情況下,如果所述計算機能夠驗證鑒別碼,而不需要與遠程鑒別服務器交互,那么這將是有益的。但是,如果該計算機丟失或者被偷竊,或者受到入侵者控制,那么該入侵者可能會獲取驗證信息,并使用該信息企圖針對遠程鑒別服務器假冒該用戶(即令牌)。因此,雖然可以將某些信息存儲在計算機上以便能夠鑒別輸出令牌,但是這樣做不應當帶來不可接受的安全缺陷。
因此,需要克服上述缺點及其它缺點。
發明內容
本發明提供一種用于斷開鑒別的系統。服務器將一系列驗證記錄下載到已經通過服務器鑒別的計算機,例如膝上型電腦。在一個實施例中,所述記錄對應于預定的一段時間。在另一個實施例中,所述記錄對應于事件。所述記錄存儲在膝上型電腦中,并且包含與預定的這一段時間內由鑒別令牌所輸出的數據相對應的信息,例如口令。所述記錄以一種方式和格式存儲,這種方式和格式用于使攻擊者在給定的未來時間內能夠發現令牌輸出的可能性最小化,從而防止通過膝上型電腦的鑒別和/或在重新連接到服務器后假冒用戶。
通常,驗證器對擁有能夠提供一個或者多個一次性通行碼(passcode)的鑒別令牌的用戶進行鑒別。獲得驗證記錄并且獲得通行碼。然后確定該通行碼是否與驗證記錄一致,其中驗證記錄是參考通行碼的函數(reference passcode)。
在一個實施例中,所述記錄包括一些值,已經使用單向函數對這些值進行了加密、模糊化或者使得這些值不可讀出。散列(hash)函數是這種單向函數的一個例子。在一個特定的實施例中,散列算法接收給定時間的令牌輸出值作為輸入,所謂的鹽值(salt value),以及所謂的胡椒值(pepper value)。所得到的從服務器下載下來的散列輸出存儲在膝上型電腦上,作為記錄的一部分。可以將預定的那一段時間每個令牌輸出時間間隔的記錄存儲起來。如果該令牌輸出是由這個用戶提供的,并且該令牌數據、鹽值和胡椒值的散列與對應于給定時間間隔的記錄匹配,那么這個用戶就通過了膝上型電腦的鑒別。
通過下面結合附圖的詳細描述,將更全面地理解本發明,在這些附圖中圖1是根據本發明提供斷開鑒別的系統的框圖;圖2是說明本發明中基于時間的示例性信息的圖形表示,可以下載這些信息以提供斷開鑒別;圖3是示出本發明中斷開鑒別的示例性部件的框圖;圖4是根據本發明可以構成斷開鑒別一部分的示例性記錄的文本表示;圖5是本發明中斷開鑒別另一個特征的圖形表示;圖6是本發明中斷開鑒別又一個特征的圖形表示。
具體實施例方式
本發明提供一種系統,不能與鑒別服務器通信的時候,這種系統有利于在代理,例如膝上型個人電腦(PC)上進行斷開鑒別。(斷開時間段之前)連接到鑒別服務器時,下載對應于預定的一段時間的一系列驗證記錄至所述代理。在一個實施例中,所述代理存儲由鑒別服務器產生的,處理后例如散列處理后多個版本的一次性通行碼。
通常,驗證器鑒別擁有鑒別令牌的用戶,這些鑒別令牌能夠提供一個或者多個一次性通行碼。獲取是參考通行碼函數的驗證記錄。確定所提交的通行碼是否與這一驗證記錄一致,該通行碼可以作為時間、事件、詢問等的函數來產生,如同以下將詳細描述的一樣。在一個實施例中,斷開的用戶提交來自鑒別令牌的通行碼給驗證器,用于通過確定所提交的通行碼是否與對應的驗證記錄一致來鑒別用戶。
在一個特定的實施例中,根據用戶時間的種子值或者基于序列的鑒別令牌,例如由RSA安全公司提供的RSA SECURID令牌,來產生基于時間的通行碼。驗證記錄可以在例如用戶旅行之前下載。也可以將它們下載下來供一次登陸會話期間使用,例如使用幾分鐘到幾小時。因此每個驗證記錄都是可以從種子值產生的參考通行碼的函數。
對于基于時間的令牌,一次性通行碼僅在短期內有效,例如一分鐘。應當為每個令牌時間間隔下載一個記錄。或者應當下載(可能是中間的)種子值這種下載信息,以允許所述記錄由驗證器本身產生,其中所述種子值應當在產生所述記錄之后刪除。這更適于涉及圖2所描述的導出分層種子的方案,因為與具有單一主種子而沒有中間種子值的方案相比,中間種子值生命期有限。令牌輸出的持續時間與在代理上感覺到的任何時間變化無關,并且時間是由該令牌控制的。在斷開期間,代理可以對由用戶輸入的通行碼信息進行散列處理,并比較存儲的散列通行碼以確定是否存在匹配的情形,從而鑒別用戶。也就是說,確定提交用于鑒別的通行碼是否與給定的驗證記錄一致,其中的驗證記錄是能夠由例如鑒別服務器產生的參考通行碼的函數。
圖1示出了根據本發明具有斷開鑒別功能的示例性系統100。代理102,例如個人計算機(PC),作為驗證器,可以通過可選網絡106與服務器104通信,供服務器進行鑒別。用戶可以從鑒別令牌108提供個人身份號碼(PIN)和數據給代理102,代理102將此信息傳送給服務器104。通常,令牌108由控制代理102的用戶所擁有。令牌108中的信息可以由用戶例如通過鍵盤提供給代理102,或者可以通過例如有線或者無線通信線路自動提供。如果需要,同樣可以用各種方式將信息提供給令牌。該令牌也可以是在驗證器內實施的“虛擬”軟件令牌。應當理解,該服務器可以相對于幾個時間間隔的記錄(和/或對應于多個事件)來驗證令牌輸出,從而時鐘漂移或者其它同步喪失都不會使用戶喪失訪問服務器的能力。
在鑒別用戶之后,服務器104可以提供信息給代理102,能夠在有限的一段時間內將這些信息用于用戶鑒別,如同下面將更加全面地說明的一樣。通過這種方式,未被授權的人訪問所述代理102和/或重新連接的時候對服務器104成功假冒已授權用戶都不太可能。
可以支持各種令牌類型,包括基于時間的令牌,其中令牌輸出或者令牌碼是時間變量和令牌秘密(例如種子值)的函數;詢問響應令牌,其中令牌輸出或者響應是提供給該令牌的詢問值和令牌秘密的函數;基于事件的令牌,其中令牌輸出是事件計數器和令牌秘密的函數,或者其中令牌輸出是令牌秘密的函數,并且該秘密響應某些事件而更新(例如按下令牌上的按鈕);以及涉及上述某些組合的令牌。也可以將令牌的狀態信息結合到令牌輸出的導出過程中,正如在M.Jakobsson和A.Juels于2003年11月26日提交的10/724,034號美國專利申請“Identity Authentication System and Methods”中進一步描述的一樣,在這里將該申請引入作為參考。此外,一次性通行碼不需要由任何特定的函數產生;它們可以是存儲在令牌中并與鑒別服務器共享的隨機值。同時,該令牌本身不必是一個計算裝置;它也可能包括在其上印有通行碼的卡(可能是“刮掉”類型的)。應當理解,通行碼和鑒別字符串這些術語是可以互相交換使用的。
此外,可以將PIN附加到令牌輸出上或者包含在計算一次性通行碼的過程中。這一組合可以由令牌本身或者其它地方完成。也可以將PIN提供給所述令牌,并在該令牌產生輸出之前由該令牌進行本地驗證。也可以應用生物統計學在本地相對于令牌進行鑒別。但是,這里所描述的方法不需要PIN或者生物測定。
圖2與圖1一起描述了根據本發明可以被下載用于斷開鑒別的信息。在一個特定的實施例中,鑒別令牌108包括產生年種子152a~m的根種子150,從年種子產生月種子154a~n。從月種子154產生日種子156a~o,然后是小時種子158a~p等等直到在所需的時間間隔產生唯一的值,例如每六十秒(一分鐘)160a~q。可以利用現有技術中公知的方式使用單向函數產生種子值。鑒別服務器104也可以產生這些值,以便能夠驗證令牌值。此外,還用這些值產生將被下載至代理的記錄。
如果用戶意識到將從服務器104斷開,那么可以由服務器給代理102下載以記錄為形式的鑒別信息,覆蓋預定量的時間,例如三天162。這些記錄每個都可以對應于令牌的給定時間間隔。下載的信息應當使用戶能夠在這三天162內訪問這臺計算機(代理102),直到利用服務器104重新鑒別。應當將下載的記錄存儲起來,從而對于未被授權人員例如偷竊膝上型電腦的人來說,要訪問該計算機和/或假冒該鑒別服務器的用戶是相當困難的。顯然,在很多情況下攻擊者希望假冒用戶來訪問例如公司網。
應當理解,可以將本發明應用于其中與鑒別令牌中的信息一起提供口令或者個人身份號碼(PIN)的實施例,以及詢問/響應實施例。
下載的信息可以使用各種自動和手動機制進行下載。但是,鑒別服務器應當驗證用戶是被授權下載所述信息。通常,將下載的信息作為記錄存儲在代理上,從而使代理能夠識別與每個記錄關聯的時間間隔。
在一個示例性的實施例中,下載的記錄對應于預定的時間段。例如,被授權用戶可能有三天時間從服務器斷開。服務器可以下載記錄供這三天時間內的鑒別。所述記錄可以包括對應于詢問/響應數據的信息。在一個實施例中,所述記錄包括加密數據,這些加密數據對應于鑒別令牌響應詢問c在時間t的響應At(c),這些數據將構成該記錄的一部分。但是,詢問并不是必需的。如同以下進一步描述的,也可以單獨使用基于時間的值。更一般地,可以將本發明應用于如上所述的各種鑒別令牌類型。
應當理解,雖然假定了基于時間(在某些場合也可以是基于詢問的)的鑒別令牌,但是這里所描述的技術也能夠用于基于事件的和不是基于時間的其它實施例。例如,代替使令牌輸出與時間變量相關,所述輸出可以與計數器相關;因此記錄可以不直接對應于時間段(例如三天),而是對應于令牌輸出數量(例如300個令牌輸出)。為方便起見,下面將一般性地描述基于時間的實施例,但是轉換成基于事件或者基于序列的實施例,以及將詢問結合進來,對于本領域普通技術人員來說將是顯而易見的。符號At(c)的目的就是要表示這種替換。
雖然以下描述主要針對散列函數的使用,但是應當理解各種算法類型,包括單向算法和非單向算法都應當落在本發明的范圍之內。正如這里所使用的,單向函數是指對其求逆實際上比計算它更困難的單向函數。可以使用標準散列函數,例如SHA256(在聯邦信息處理標準(FIPS)PUB 186-2,“Secure Hash Standard(SHS)”,2002年8月中給出了定義)。正如所公知的,使用散列構造的迭代,例如1000次SHA256的連續迭代,來增加攻擊者的計算成本,同時保持用戶的開銷適度也是很有益的。此外,雖然總的來說是結合給單向函數提供基于時間的變量,例如令牌輸出,來描述本發明,但是應當理解所述變量也可以對應于事件等等。
在一個特定的實施例中,下載的記錄包括At(c)以及在預定時間段例如三天內每個令牌時間間隔的鹽值和胡椒值的散列。該鹽值與相關記錄一起存儲,而胡椒值則不存儲。對于不同的時間,鹽值可能不同。也可以下載信息,例如一個或者多個種子值,以便能夠產生所述記錄。
正如在這里所使用的,鹽值指的是這樣一個值,將它包含進來作為要進行散列處理(或者加密)的信息的一部分。例如可以作為具有預定比特數的隨機數來提供該鹽值。該鹽值可以與所述記錄一起存儲,或者為了減少存儲需求,可以從與一組記錄相關的主鹽值,以及與給定的記錄相關的其它信息產生它。正如本領域普通技術人員所理解的,鹽值能夠阻止詞典型的攻擊獲取安全值例如令牌輸出。由于鹽值對于不同的時間是不同的,因此攻擊者確定安全值要做的工作必須對每個時間間隔都做一遍,因為該鹽是散列數據的一部分。
正如在這里所使用的,胡椒指的是這樣一個值,它具有已知的或者可預測的比特數,這個值是被散列處理的數據的一部分。但是,與鹽值不同,胡椒值不被存儲。還有,也不下載胡椒值。因此,計算可能的胡椒值,并為每個胡椒值計算散列函數。由于必須為可能的胡椒值計算散列函數以找出實際的值,胡椒減慢了詞典型攻擊。
在圖3所示的一個特定實施例中,對應于時間t的給定記錄200包括對應于散列函數輸出202的信息。散列函數的輸入包括時間t的令牌輸出,At(c)204,時間t的鹽值206,以及時間t的胡椒值208。當試圖訪問計算機時,可以要求用戶提供令牌輸出At(c)204。應當理解,由于沒有存儲胡椒值208,因此對可能的胡椒值計算散列函數。雖然這些值中每個值的比特數可以變化,但是示例性的比特數包括At(c)的20比特,胡椒的10比特,以及鹽的21比特。將得到的散列函數202計算結果與給定時間的存儲記錄200進行比較,以便找出正確的值,能夠訪問計算機。
應當理解,如果沒有詢問,則不存儲c。此外,如果沒有詢問,那么At不是c的函數,不需要用戶輸入c到令牌中(或者,如果所述令牌具有有線或者無線通信鏈路,那么不需要該令牌接收詢問c)。應當理解,本發明可以應用于詢問和非詢問的實施例。
不知道給定時間的令牌安全數據At(c)204并且不知道胡椒值208的情況下,為了計算散列函數輸出,對于20比特的At和10比特的胡椒,需要220×210=230數量級次數計算。如上所述,鹽值206是已知的,但是能夠防止對所有記錄的并行類型攻擊。
在又一個實施例中,個人身份號碼(PIN)值210(附圖3中以虛線形式示出)可以構成將被散列處理的數據的一部分。如果PIN數據是13比特,那么對于每個時間間隔,攻擊者有計算次數的數量級為230×213=243這樣多的工作要做。并且如同以下更詳細描述的,這些操作必須在已下載記錄對應的時間段截止之前完成。
在圖4所示的一個特定實施例中,使用被稱為SHA256的公開的256比特散列函數。從安全信息的輸入計算從SHA256散列函數的256比特輸出,這些安全信息來自鑒別令牌(即令牌輸出或者通行碼)、鹽以及可能的胡椒。可以將SHA256散列函數輸出的一部分與存儲記錄比較。在一個示例性實施例中,可以將SHA256輸出的最高128個有效位定義為h’(x),用于與存儲的記錄比較。如果輸入是正確的,那么這些散列結果之一的h’(x)(來自可能的胡椒值的結果)將匹配。
將正確胡椒值的SHA256散列函數輸出的最低128個有效位(h”(x))作為對視窗(Windows)口令的加密值解密的密鑰。通過這種方式,僅在從鑒別令牌輸入正確的安全信息之后,才能提取正確的視窗口令。
實例將時間分成多個間隔,每個間隔等于顯示一個令牌輸出的持續時間。一個記錄與每個這種時間段相關。在某個(任意)基線時間之后的第i個時間段被稱為時間i,并且與該時間段相關的記錄稱為rec_i。這些記錄是通過機器例如ACE服務器利用令牌種子的信息計算出來的。然后從該機器向可以被稱為驗證器的機器下載一批記錄,隨后該驗證器將執行令牌輸出的脫機驗證。該驗證器典型情況下是膝上型電腦。
初始化過程(每次將要下載一批記錄時由鑒別服務器執行)如下。例如,選擇在40和80比特之間固定長度的隨機鹽值salt_i。選擇在10和25比特之間固定長度的隨機值pepper_i。利用附加或者組合的正確PIN針對時間間隔i計算令牌,例如RSA SECURID的輸出。令它為val_i值,對于6數字令牌和4數字PIN它有34比特長。可以讓val_i僅為令牌輸出,在這種情況下將不通過散列記錄驗證PIN。計算值y=SHA256(pepper_i,salt_i,val_i)。讓A_i為y的第一部分,其中A_i是例如80與128比特之間的固定大小。讓B_i作為y的第二部分,它可以是128比特(但是不包含A_i的任何部分)。值A_i隨后被用于驗證鑒別嘗試的正確性,同時B_i提供能夠加密視窗口令,秘密密鑰或者對應用于驗證器上有益的任何其它秘密信息的密鑰。這些信息,也稱為數據元素,被稱作M,并且使用B_i對M加密稱作E_i。可以使用公知的AES算法來加密M。如果M比128比特長,那么將在密碼塊鏈接(CBC)模式下使用密碼。令rec_i=(salt_i,A_i,E_i)。應當注意,pepper_i、val_i以及B_i這些量都不包含在所述記錄中,不發送給所述驗證器。
應當理解,所述信息M可以采用各種形式。除了已經描述的用于對視窗口令解密的密鑰之外,所述信息可以是-用于對驗證器上的文件或者其它數據解密的例如高級加密標準(AES)的對稱密鑰加密系統的秘密密鑰-用于利用消息鑒別碼(MAC)鑒別數據的秘密密鑰-在非對稱(公開密鑰)加密系統例如RSA公開密鑰加密系統中用于對文件或者其它數據解密的私有密鑰-用于利用數字簽名方案鑒別數據的私有密鑰-用于針對例如其它計算機上的應用進行鑒別的秘密密鑰或者私有密鑰-用于解開其它密鑰(如上所述這些其它密鑰本身也可能是秘密密鑰或者私有密鑰)的秘密密鑰或者私有密鑰-用于保護敏感數據,例如用戶概況信息(例如信用卡號碼)或者本地口令表的密鑰-任何敏感數據-視窗口令本身此外,代替利用值B_i對M加密,可以直接從B_i導出密鑰。也可以將值B_i本身用作密鑰。
鑒別過程如下。用戶輸入用戶名(可選)、當前令牌碼以及PIN(可選),并且從這些數據獲取值val_i。驗證器選擇記錄rec_i以匹配基于用戶名(如果輸入)和時間的輸入。對pepper_i所有可能的值使用窮舉搜索(以任何需要的順序),計算值y=SHA256(pepper_i,salt_i,val_i)。比較第一部分(與A_i相同大小)與rec_i中的A_i以確定是否匹配。如果對于某些胡椒存在匹配,那么鑒別成功。在這種情況下,令B_i為y的第二部分。值B_i可以被用于對E_i解密以獲得M。
正如對于一次性通行碼所容易理解的,在令牌與驗證器之間有可能存在某些同步損失。例如參見授予Weiss的4,885,778號美國專利,在這里將它引入作為參考。因此,如果利用記錄rec_i的鑒別不成功,那么驗證器可以利用一個或者多個相鄰的記錄重試。也可以跟蹤在以前成功的鑒別中使用了哪些記錄,以便防止重新使用以前的令牌碼。
代替計算A_i值,驗證器也可以僅計算B_i值,并基于E_i的成功解密單獨鑒別該用戶。例如,如果加密操作包括冗余,例如填充或者在解密期間校驗的校驗和,或者如果本身加密的值M具有可以驗證的冗余,那么成功地解密確保了使用正確的密鑰B_i。這又給所提供的安全信息是正確的提供了保證。由于不計算或者存儲A_i值,該方法具有減少存儲和計算需求的好處。
作為另一個選擇,值M的成功使用可以是通過其驗證安全信息的手段。例如,如果值M是視窗口令(或者通過其對所述密碼解密的密鑰),那么該視窗口令可以由視窗操作系統作為確定所述安全信息是否正確的手段進行驗證。除了增加正確性的保證之外,在沒有冗余地對所述值加密的情況下,該方法還具有必須使用所述值以便能夠進行驗證的好處,從而有可能給其中使用了所述值的系統發出遭到攻擊的信號。也就是說,在不使用值M的情況下,獲得記錄的攻擊者不能確定對安全信息的猜測是否正確。
也可以將所述各種替代方式的元素組合起來,從而使正確性的確保來自于A_i的匹配、E_i的成功解密和/或M的成功使用。
在圖5所示的本發明的另一個方面里,可以“搖晃”散列函數的鹽值。在一個實施例中,以置換方式存儲每個散列記錄,如在第一列250中所示的,與列252中對應的鹽值之間的關聯。也就是說,與散列輸出一起存儲的鹽值不是該散列輸出的鹽值。通過這種方式,對鹽值進行測試以找出對應于給定散列輸出的鹽值。應當理解,本領域普通技術人員已知的各種機制都可以用于置換這種鹽/散列關聯。
在圖5所示的又一個實施例中,鹽值被分成獨立存儲的第一部分salt1和第二部分salt2,如在列254中所示的。該第一和第二鹽部分被分開、置換和存儲。對于本領域普通技術人員來說很明顯,可以將該鹽分成任何數量的部分并以各種技術和方式進行置換。此外很明顯存在大量可以使用的鹽和胡椒的混合。
實例作為“鹽罐”初始化過程的一部分,同時準備某一數量n的記錄,例如1000個記錄。設置胡椒為空字符串(即不使用任何胡椒)。對于每個記錄,這樣做導致一個多元組(salt_i,val_i,A_i,B_i,E_i)。在這些多元組中,驗證器接收除了B_i之外所有的值。但是,在發送任意值過去之前,隨機地置換這n個salt_i值。不修改它們的比特串,而是僅修改與它們相關的記錄。在置換之后,存在格式為rec_i=(salt_i,A_i,E_i)的n個記錄,其中salt_i被用于指代置換到第i個位置的鹽。值A_i或者E_i不置換。
在驗證過程中,驗證器以窮舉方式嘗試salt_i值和A_i值的每個組合。它為每個這樣的鹽值計算值y=SHA256(salt_i,val_i),比較第一部分與所選記錄的A_i值。該過程將正確值y的計算“延遲”平均n/2倍,并且最壞的情況下延長n倍。因此這將對應于10比特長度的胡椒值。產生更長的延遲而不必處理更多記錄的方法不言自明。
為了將計算成本平均增加n*n/2倍,將鹽值分解成相同大小的兩部分,然后每個這種部分與一個隨機記錄相關聯,即這些半個獨立置換。于是記錄具有(salt_{i1},salt_{i2},A_i,E_i)的格式,其中salt_{il}是置換后的第一半,salt_{i2}是置換后的第二半。為了驗證令牌值,驗證器需要以窮舉方式搜索第一半和第二半鹽值的所有組合,這樣做平均要嘗試n*n/2次。通過將每個鹽分成甚至更小的部分,同時通過不將它們按第一半先存儲等順序存儲,而是對每個記錄按隨機順序存儲,能夠很容易地增加計算工作量。增加工作量的另外一種方式是引入必須同時搜索的“啞”記錄。
圖6示出了本發明的另一個方面,其中時間的流逝會增加攻擊者成功訪問計算機所需完成的工作量。在一個特定的實施例中,用戶下載例如三天的鑒別記錄。如上所述,成功攻擊需要243次計算。如果用戶在預定時間段,例如一天內不登陸,那么第二天成功攻擊的工作量會增加到例如2×243。如果用戶兩天不登陸,那么工作量增加到4×243。雖然附加的工作也會增加對提供正確安全信息的用戶進行鑒別所需的時間,但是對于每個后續的時間段,例如天,攻擊者所需完成的工作量都要加倍。用戶登錄的延遲可能是明顯的,但是應當是能夠接受的。
總之,鑒別真用戶時,與沒有使用這里所描述的本發明的技術那種情況相比,計算機的工作量應當大致相同(較少)。如果用戶在相對長的時間段內沒有進行過鑒別,那么計算成本上升是可以接受的。但是,該系統不應當允許攻擊者有大量的時間通過嘗試所有可能的組合來“分解”記錄。因此,對應于未來時間間隔的記錄比那些對應于當前時間間隔的記錄更應當受到保護,因為攻擊者將有更多的時間來攻擊這些記錄。
應該理解,試圖未經授權訪問計算機的攻擊者會受到激勵用所需最低工作量獲得進入。因此,對應于下載的記錄,攻擊者不可能傾向于選擇直到接近預定時間段結尾,例如三天的結尾,才能夠恢復出令牌輸出的時間間隔。由于所需工作量,攻擊者能夠實現攻擊的時間段長度有限。
還是參考圖6,在一個實施例中,每次成功登陸都提供給下一次登陸或者時間段的“提示”。在一個示例性實施例中,胡椒值的比特數對于用戶不登陸的每一天都增加。例如,在第一天胡椒值為10比特,對應于243次計算的工作量,如上所述。如果用戶在第一天不登陸,胡椒值在第二天增加到11比特。如果用戶在第一天登陸,那么獲取第二天11比特胡椒中的1比特用于第二天,以便為第二天提供10比特的有效胡椒值。
如果用戶在第一天和第二天都不登陸,那么用于第三天的胡椒值增加到12比特,對應于2×2×243的工作量。如果用戶在第一天和第二天沒有登錄的情況下確實打算在第三天登陸,那么由于對應于增加的胡椒值的數量而增加的計算量,在獲得訪問的過程中的延遲會增加。但是,增加的延遲不應是禁止性的。
應當理解,雖然將提供提示描述為獲取胡椒比特,但是考慮到這里所包含的說明,提供提示的方式可以按照對本領域普通技術人員來說顯而易見的方式,改變比特數量、時間、最后登陸日期、數值類型等。下面將把提示看作與胡椒獨立的變量,雖然它們也可以被實現為胡椒的一部分或者其它屬性。
在另一個實施例中,從胡椒值空間的被選部分或者搖晃后(shaken)鹽值的置換提供提示。例如,可以利用具有不等概率的隨機比特選擇胡椒空間的不等部分,這里的不等概率為邏輯“1”或者“0”。
實例對于時間間隔i,記錄rec_i=(A_i,Δ_i,salt_i)。還將時間分成更長的時間段,例如24小時間隔或者日歷日,用t做下標。每個時間段t與hint_i值關聯,這個值的長度可以在例如1~10比特范圍內。時間間隔i所屬的較長時間段由t_i表示;幾個連續的時間間隔將屬于相同的較長時間段(例如1440個時間間隔,如果時間間隔是一分鐘并且較長的時間段是一天的話)。
當接收輸入值val_i時,需要驗證它是否對應于rec_i。這里假定val_i是較長時間段t_i的一部分,并且hint_{t_i-1}是已知的。如果用戶在前一個較長的時間段內已被服務器成功地鑒別,那么該提示將是已知的。對于所有可能的pepper_i值,驗證器計算(A|B)=h(val_i,hint_{t_i-1},salt_i,pepper_i)這個量,其中h()表示散列函數,其中A與A_i大小相同,salt_i是指間隔i的鹽值,pepper_i是指在間隔i的可能的胡椒值,并且B是指可以用作解密密鑰的散列輸出的一部分。將量A與值A_i進行比較,如果匹配,就認為(val_i,pepper_i)對應于該時間間隔的記錄rec_i。
應當理解,可以使用值B來加密視窗口令或者其它數據以及下一個提示。足以對每個數據解密的信息可以作為字段E_i存儲在記錄中。也可以存儲延遲值Δ,從而當它與B的某些部分進行XOR(異或)運算以后,所述結果為未來的某些時間間隔產生提示。值Δ可以通過鑒別服務器來計算,并在某個以前的時間下載到計算機中。
如果值hint_{t_i-1}不是已知的,那么必須以窮舉法嘗試所有可能的值。給定遭到破壞的機器狀態,對于“誠實”地使用這一系統,以及對于攻擊者希望確定val_i這個量的攻擊,都是如此。
從值B計算所述提示。具體而言,hint_{t_i}=Δ_iXORB′,其中B’為B的一個比特(或者通過B獲得的一個比特)。因此,計算rec_i的一方設置Δ_i=B XOR hint_{t_i},其中hint_i是獨立于rec_i中的值選取的,XOR是指邏輯異或函數。與不知道hint_{t_i-1}這一提示的一方相比,這樣做允許知道hint_{t_i-1}的一方在下一個較長的時間段內(A|B)的計算量“打折”。前者將不得不結合所有可能的胡椒來嘗試所有可能的提示;后者保持了前一次成功鑒別的提示,只需要嘗試所有可能的胡椒。因此,胡椒使每個人減速,提示僅僅使那些不知道他們的人減速。
在前面,為了得到與所述提示相關的計算量折扣,必須了解剛好是前一個較長時間段中給出的提示(也可以在當前的時間段求出所述提示,但是沒有折扣,因為它可能與相同時間段內用于其它記錄的提示相同)。在一個實施例中,希望給了解在較早的時間段接收到提示的人提供類似的好處。
如果提示的大小為10比特,那么可以給了解剛好是前一個較長時間段的提示值的一方10比特的折扣。可以給了解最近兩個較長時間段的提示的一方9比特的折扣,可以給了解最近三個較長時間段的提示的一方8比特的折扣等等。這一點可以通過使hint_t=f(hint_{t-1},r_t)來實現,其中r_t是一個隨機比特(或者在連續提示之間幫助的差異應當比1大的情況下,是幾比特)。在這里,f可以被選擇為LFSR(線性反饋移位寄存器)、單向函數或者適合組合輸入部分的其它機制。
上述描述對應于這樣一個設置,其中計算工作量隨著自最后一個已知的提示以來的時間段數增大而指數變化。
如以下所描述的,也可以使計算工作量隨時間段數線性變化。在設置階段,系統為將在驗證器上存儲其記錄的每個較長時間段t產生隨機加密密鑰K_t。該系統定義Δ_i,從而使B_i′XORΔ_I給出隨機加密密鑰。在成功鑒別之后恢復密鑰K_t。使用日加密密鑰K_t,對相對小的比特串表M_1、M_2、…、M_T加密,其中對于第j個隨后時間段來說M_j是一個“掩碼”,并且T是在其之前成功鑒別導致“折扣”的時間段數量。每個值M_j是一個T比特串,其中每個比特對應于可能的胡椒值空間的不同部分,其中所述胡椒可能出現在第j個隨后時間段;值M_j將設置j比特。這意味著已知的M值越新(給定前一次并且成功的鑒別嘗試),可能的胡椒值的搜索空間減少得越多,相應地計算速度也就越快。
隨后,對于成功的鑒別嘗試,由驗證器導出字符串M_1…M_T,并按明文存儲。這樣做允許減少未來鑒別嘗試的計算成本。如果設置M_j的1比特,那么應當從空間的那一部分搜索胡椒,如果清楚的話,就不搜索。M_j將設置j比特,這意味著胡椒空間減少到下一個較長時間段其整個大小的1/T,對隨后的長時間段是2/T,對下一個是3/T等等。在連續的長時間段內揭示的,對應于給定的未來時間段的那些M_j值,應當比在前一個時間段內揭示的那一個要清楚1比特,因而在不同的長時間段內揭示的M_j值不給出不需要量的信息。
在一個實施例中,在用服務器鑒別之后,定期下載新的“長周期”記錄到驗證器中。所述掩碼應當工作新的一些較長時間段,這意味著服務器必須記住該掩碼。驗證器的第一次下載(這需要初始鑒別)可以包括掩碼的初始設置。
上述技術還為所謂的鹽罐(salt shaker)實施例工作;提示將與置換的鹽值一起被輸入到散列函數中,并且下一個提示將在該記錄中被加密。在一個替換實施例中,在鹽罐實施例的范圍內的提示值刪除對應于前一次成功鑒別嘗試的那些鹽部分,或者將這些部分標記為已經搜索過。然后,對未來的鑒別嘗試不搜索該記錄以及相關的鹽,從而為每個成功的鑒別嘗試提供特定的計算折扣。可以看出,對于某一個有界的時間段,成功鑒別嘗試越多(與置換的那一組記錄相關),那么計算成本將會越低。
示例將時間劃分到天,例如24小時的時間段。例如,如果用戶在第一個24個小時周期內成功地通過驗證器鑒別,那么對于之后開始的24小時周期,驗證令牌輸出應當并不“昂貴”;對于接下來的24小時周期更加不昂貴,并且對于相同的24小時周期來說極其不昂貴。
從范圍
中選擇胡椒值,其中maxpepper等于例如4095。該范圍可以分成四個部分,
,[1024…2047],[2048…3071],[3072…4095]。在這四個范圍中相同的一個范圍內選擇給定日的所有胡椒值。一旦用戶已被驗證器成功鑒別,那么驗證器就知道這是哪一部分,從而相同日任何進一步的嘗試在計算工作上都將僅花費它們通常所需花費的1/4。這是因為這樣一個事實,已知這一天晚些時候的胡椒來自這一天早些時候對應的同一個范圍,并且驗證器記住了這一范圍。這對第二天不會提供折扣。但是,如果值M包含不用于第二天的胡椒的有關兩個間隔(四以外)的信息,那么允許以其花費的一半執行第二天的所有鑒別嘗試。
此外,如果值M包含有關不用于第二天的后一天的一個胡椒間隔的信息,那么這對第二天的后一天將提供1/4的計算折扣。應當注意,兩天提示必須是第二天提示的子集,以便使兩個提示不會將成本減少到1/4,除非需要這樣。
以上的各種胡椒和鹽罐方法的優點在于攻擊者的成本顯著地增加,而對產生記錄的成本只有適度的影響。如果在鑒別服務器處需要產生大量的記錄,那么這是有吸引力的,如果有許多用戶就會是這種情況,特別是對于其中頻繁產生新令牌輸出(例如每分鐘)的基于時間的鑒別令牌。但是,胡椒和鹽罐方法并不是必需的。一種替代的方法是使用迭代或者其它減慢的散列函數。這樣做也會極大的增加攻擊者的成本,盡管它會對產生具有更大的影響(由于與僅僅選擇胡椒或者鹽置換相比,產生記錄的一方也必須使用減慢的散列函數)。
胡椒或者鹽罐方法的另一種替代方式是使用時間鎖難題(time-lock puzzle),例如在1996年2月MIT Laboratory for ComputerScience(麻省理工學院計算機科學實驗室)technical memo(技術備忘錄)MIT/LCS/TR-684中R.L.Rivest,A.Shamir以及D.A.Wagner的“Time-Lock Puzzles and Timed-Release Crypto”所描述的。時間鎖難題是能夠高效率地構造的難題,但是它的求解卻需要大量的運算。作為一個例子,這個難題可能需要計算y=x^(2^k)mod n這個值,其中n是大的復合模量,x和k是給定的整數。構造這個難題的一方還知道n的多個因子,因此知道phi(n),其中phi(n)是歐拉的totient函數。因此該方能夠高效率地按照y=x^r mod n計算y,其中r=2^k modphi(n)。但是,求解這個難題的那一方僅知道模量n,并不知道phi(n),因而必須執行k次連續的模二次冪運算(modular squarings)。為此,輸入的x將代替散列函數的輸入;值k將作為控制成本的可變整數;并且輸出y將代替散列函數的輸出。
時間鎖難題與胡椒或者鹽罐一樣具有相同的特征,即驗證的成本增加而不必極大地增加產生的成本。但是,在胡椒和鹽罐方法中,仍然存在攻擊者在比預期少的幾次操作中偶然正確地猜出胡椒或者鹽置換的可能性。在時間鎖難題方法中,與迭代散列方式類似,攻擊者實質上必須執行所需的所有步驟;不存在未知的東西需要猜測,只有靠工作才能做到。(但是,如果需要的話,可以容易地提供這種“未知的東西”,例如作為散列或者難題的輸入的附加部分;這將提供一種將提示結合到這些方法中的方式)。
在又一個實施例中,可以為在預定間隔過去以后其記錄已下載的時間的訪問提供“長期”提示。例如,如果下載30天時間段的記錄,并且用戶30天沒有登陸,那么用戶可能需要例如通過電話聯系鑒別服務器或者呼叫中心,以獲取進一步的通行碼。可以將它看作是緊急訪問碼,它會相對較長。
在一個示例性實施例中,下載的記錄包括第一時間段例如頭30天以第一格式存儲的記錄,例如如上所述的,以及第二時間段例如后30天以第二格式存儲的記錄。在一個實施例中,第二個30天的記錄利用除上述加密外的緊急訪問碼進行加密。通過這種方式,在獲取緊急訪問碼之后,用戶可以在第二個三十天的周期內進行鑒別。該緊急訪問碼可以被認為是在第二個30天周期的時間間隔驗證散列的提示。也可以將該緊急碼用于允許訪問提示。
在一個替代實施例中,可以將相對較長的胡椒值,例如80比特,輸入到散列函數中。關于這80比特,驗證器可以最初給出胡椒的60比特,這60比特對于預定的時間段來說是相同的,例如歷月。下一個月的60比特是不知道的。下一個月的60比特可以通過例如經過服務器鑒別或者通過能夠由呼叫中心提供的口頭電話通信獲得。
應當理解,所有的記錄可以一起加密,這將包括相對長緊急密鑰的用戶,例如128比特,或者單個記錄可以使用“擴展胡椒值”,其中擴展是緊急密鑰,并且對于30天周期的所有記錄來說是相同的。一旦給出緊急碼并且與所述記錄一起存儲,那么如果從來不存在任何胡椒值的擴展,胡椒搜索就與其將具有的一樣簡單。
作為進一步的變形,在某些情況下為了鑒別,可以要求用戶使用不止一個令牌輸出。通過從兩個(或者更多)令牌輸出(典型地為連續的)中導出值val_i以及可選的PIN,很容易修改已經描述的技術以適應這種情況。作為一個例子,驗證器可以為第一個30天的時間段提供一組普通記錄(從單個令牌輸出中導出的),并為下一個30天提供一組修改的記錄(需要兩個令牌輸出)。通過這種方式,已斷開30多天的用戶仍然可以通過鑒別,但是僅僅在具有兩個令牌輸出的情況下才行;這將極大地增加攻擊者搜索下一個30天的正確令牌輸出所需要付出的成本,對存儲在驗證器上的未來記錄提供更強的適當保護。實際上,利用這種強保護,有可能存儲一年或者更多未來的記錄,從而支持不確定的斷開時間段。但是,在許多情況下,管理政策可能會要求用戶偶爾通過服務器鑒別,以驗證用戶保持被授權使用斷開的機器。可以將這些鑒別過程下載的附加提示結合到未來的記錄中以加強該政策。
上述提示機制同樣可以有利地應用在這里。修改過的記錄組也可以包含加密的提示,從而當用戶在第二個30天的周期內利用兩個令牌輸出進行鑒別時,獲取允許在那30天利用單個令牌輸出實現隨后鑒別的提示。實現這一特征的一種方式是具有第二個30天的兩個記錄組一個要求也包含加密提示的兩個令牌輸出的修改記錄組;以及一個要求單個令牌輸出加提示的普通記錄組。在第二個30天的周期之前給攻擊者增加的成本仍然保留,因為攻擊者將需要猜測兩個正確的令牌輸出,或者一個正確的令牌輸出和提示(該提示可能相對較長)。但是,一旦用戶在第二個30天的周期內利用兩個令牌輸出成功通過鑒別,將給出該時間段的提示,之后用戶可以利用單個令牌輸出進行鑒別。
類似的結構適用于多個時間段,從而每次用戶輸入一個新的時間段,都要求兩個令牌輸出。作為一種情況,最初可能要求用戶輸入用于第一時間段的兩個令牌輸出。來自在前時間段的提示也可以以各種方式與這一結構結合,如果用戶足夠近的時候或者十分頻繁地利用一個令牌輸出通過鑒別,或許因此不再需要兩個令牌輸出。
結合兩個令牌輸出使用的修改記錄僅需要產生所述提示,不需要實現兩個令牌輸出的立即鑒別;這是上述原理的一個例子,其中令牌輸出的正確性可以由從所述記錄中恢復的值M的使用來確定。這里的值M將是所述提示。在從兩個令牌輸出中恢復候選提示之后,驗證器將隨后相對于普通記錄使用該提示來驗證一個或者兩個令牌輸出。該方法具有修改的記錄不必包括A_i值,而是僅包括E_i值(以及可能的鹽,如果如上所述它不是從主鹽導出的話)的優點。很清楚這些修改記錄的E_i值可以簡單地作為普通記錄的其它字段存儲,而不是具有兩個單獨的記錄組。
在本發明的另一個方面,在產生所述記錄時只使用用戶PIN的一部分,以便增加假冒攻擊失敗的可能性并提供檢測假冒攻擊的機會。如上所述,攻擊者有可能獲取給定時間的鑒別令牌的安全信息。通過僅使用一部分用戶PIN,攻擊者不可能從所述記錄中獲取正確PIN的完整值。隨后,攻擊者可能試圖針對鑒別服務器假冒該用戶。由于攻擊者還不具有正確PIN的完整值,因此鑒別服務器可以檢測到該攻擊。將會理解到,可以修改PIN信息的存儲以平衡鑒別服務器的安全性和膝上型電腦的安全性。
例如,如果PIN具有四個數字,可以僅使用兩個數字。攻擊者有可能獲取該記錄中的兩個數字,但是,其它兩個數字仍然未知,并且攻擊者不得不猜測。在一個實施例中,攻擊者必須猜測正確的PIN以獲取視窗口令,例如該密碼本身與至少一部分PIN結合。這使得攻擊者獲取視窗口令更困難。
安全威脅在于攻擊者可能在成功搜索之后獲知PIN,然后使用該PIN去通過安全服務器的鑒別。通過在斷開機器上僅使用一部分PIN,攻擊者不能獲得整個PIN。應當理解用戶仍然可以每次輸入完整的PIN以產生相同的用戶經歷,但是在計算使用之前可以忽略部分PIN。
雖然這里所描述的某些實施例涉及視窗口令,但是應當理解本發明還可以應用于在登陸過程中要求用戶提供識別信息的其它操作系統。
在另一個實施例中,可以為相同的時間間隔存儲多個記錄。每個記錄可以對應于一個正確的令牌輸出,但是僅有一個記錄具有正確的PIN。例如,對于給定的時間間隔可以存在多個記錄,例如三個,其中三個記錄中的兩個具有錯誤的PIN。攻擊者不知道正確的PIN,可能在嘗試在線假冒通過鑒別服務器時試圖從該三個記錄中猜測正確的PIN。由于攻擊者有可能猜測錯誤,因此減少了假冒攻擊成功的機會(在這里,對所有記錄使用相同的一組錯誤PIN,否則攻擊者將能夠區分出正確的PIN和錯誤的PIN,因為正確的PIN將出現在許多記錄中,而錯誤的PIN不會)。
應當理解,可以方便地對各種參數進行修改以滿足特定應用的需要。例如,PIN的大小,錯誤記錄的數目,輸入到散列中的PIN部分的大小等等,都可以根據需要進行調整。PIN的這一“部分”本身可以是該PIN的任意函數,而不只是子串,從而類似的PIN很可能產生不同的部分,從而減少用戶由于鍵入錯誤提供與正確的PIN具有相同部分的錯誤PIN的機會。同時,當例如通過異或構造值val_i時,如果將這個PIN的一部分與令牌輸出結合,那么PIN的該部分將不能恢復(除非攻擊者通過其它一些方式不能得到真的令牌輸出)。(同樣參見授予Weiss的美國專利5,168,520)。
此外,如果攻擊者提供正確的安全信息(令牌輸出)和錯誤記錄之一中“壞的”PIN,或者具有所述正確部分否則就是錯誤的這樣一個PIN,鑒別服務器就能夠很容易地檢測到企圖的假冒。這可以用作有人企圖假冒攻擊的無聲警報。應當理解,授權用戶無意中提供正確令牌輸出數據與一個錯誤記錄中的PIN,或者具有正確的部分否則便是錯誤PIN的這種可能性極其低或者可以使它極其低。
此外,如果鑒別服務器檢測到某些類型的不合常規,那么服務器可以延遲并請求下一個令牌輸出。這樣做將會給攻擊者增加更多的負擔,攻擊者不得不同時求出下一個令牌輸出。應當理解,該服務器可以根據包含日時、IP地址、主叫ID信息、最后登錄時間、在接收到下載記錄后旅途中第一次登陸等等各種因素,延遲和/或請求附加的安全信息。也就是說,服務器可能基于某些類型的不合常規使代理經受進一步的仔細檢查。此外,服務器可能隨機地延遲和/或請求令牌輸出,例如時間的百分之十。
實例驗證器為每個時間段i存儲一小組記錄rec_{ij}。在這里,對于一個j值,記錄rec_{ij}等于前一個描述的值rec_i,而對其它值不是。對于其它j值,錯誤的PIN與令牌輸出組合以獲得正討論的記錄的val_i。這意味著驗證器嘗試使用正確的令牌輸出和一小組PIN來接受鑒別嘗試,其中這些當中僅有一個將是用于通過服務器鑒別的正確PIN。驗證器沒有任何方式來確定是否使用過正確的PIN,但是如果任何記錄rec_{ij}匹配就允許訪問。如果驗證器被攻擊者破壞,通過足夠的計算努力,攻擊者有可能計算出某些時間段的值val_i,但是不會知道PIN的值。因此,如果攻擊者試圖在未來的時間段嘗試通過鑒別服務器的鑒別來假冒用戶,就能夠檢測到安全性缺口,因為服務器知道,與一小組錯誤PIN之一結合使用正確令牌輸出意味著服務器被破壞。這就使得服務器能夠采取行動,這些行動可以包括警告用戶,限制對用戶帳戶的訪問,限制對與該令牌相關資源的訪問等等。
上述實施例是在非交互式令牌的范圍內描述的。應當理解,本發明可以很容易地擴展到使用詢問響應協議的令牌。對于這種令牌,每個記錄rec_i(或者rec_{ij})都包含將發送至令牌的隨機詢問,以及值A_i,這個值可以是對該詢問的正確應答的函數。
本發明提供了允許用戶通過沒有連接到安全服務器的部分安全機的鑒別的系統。部分安全是指有可能受到攻擊者控制的機器。為了能夠驗證鑒別字符串,該部分安全機(驗證器)存儲了允許驗證某些鑒別字符串的信息,這些信息是以交互式還是非交互式方式產生的信息都行。如果驗證器被攻擊者破壞,例如可以是惡意軟件程序或者計算機竊賊,那么系統能夠限制這一損害。具體地說,存儲在驗證器上的信息不允許攻擊者成功地假冒該用戶來訪問其它機器,不管該機器是安全的還是部分安全的。在可能受到這些假冒攻擊的范圍內,它們可行的持續時間被及時限制。此外,執行這種假冒嘗試需要大量的計算努力,有可能使得在假冒嘗試有意義的時間內這樣做是不經濟的。
此外,試圖提取秘密信息并進行假冒嘗試可能導致已經發生這種情況被發現。具體地說,作為前一個違反驗證器安全性的結果,攻擊者與之通信的服務器可能發現鑒別企圖已經發生;這就使得服務器能夠限制該用戶對資源的訪問,或者提醒該用戶和其他人出現了這些問題。
作為一般的安全手段,在記錄中和/或在散列函數的輸入中包含用于不同目的的附加信息是有幫助的,在加密協議工程中這是一種標準實施方式。例如,可以包含用戶名、令牌序列號、驗證器的標識符和/或提供這一批信息的鑒別服務器的標識符。這在以下描述的幾個實施例中是都是有益的。
在給定的驗證器中使用用于不同用戶的多批記錄,和/或用于同一用戶的多批不同令牌。還有,如果用戶在不同鑒別服務器處使用同一個令牌,那么每個鑒別服務器都可以為該令牌提供其自己的一批記錄,或者不同的鑒別服務器可以共享同一批記錄。
如同以上討論的,驗證器典型地是與鑒別服務器斷開了某一段時間的膝上型電腦。但是,在更一般的設置中,驗證器可以是任何想要鑒別用戶而不必連接到鑒別服務器的計算機。應當將術語“斷開”理解為表示(a)驗證器不必連接到鑒別服務器來執行鑒別;以及(b)驗證器不必具有存儲在用戶鑒別令牌中的任何秘密的一個副本。第一個方面使得鑒別系統具有高可用性和可伸縮性;第二個方面限制了攻擊對驗證器的影響。
可以想象其中存在多個驗證器的系統,每個驗證器都能夠鑒別一個或者多個用戶。每個驗證器都周期性地為一個或者多個用戶和/或令牌獲取一批記錄。從而使驗證器能夠在有限的時間段內對用戶鑒別。如果驗證器不同于用戶的計算機,那么用戶的鑒別字符串將被提供給該驗證器;作為一個典型的例子,用戶可以將該鑒別字符串提供給用戶的計算機,該計算機隨后將該字符串轉發至驗證器,有可能是通過網絡。從這個意義上講,用戶計算機和驗證器不與該網絡斷開,但是它們在鑒別意義上來說是斷開的,因為它們在鑒別操作期間不需要連接到鑒別服務器。
下面為了清楚起見,“驗證器”是根據這里所描述的方法為了某個目的而鑒別用戶的裝置,而“用戶計算機”是用戶通過它與系統中的其它計算機,包括驗證器,交互的裝置。如上所述,“鑒別服務器”是與用戶鑒別令牌共享秘密的服務器。
在其它實施例中,斷開的鑒別系統使用“預訂”模型,其中驗證器直接從鑒別服務器周期性地下載或者接收多批記錄。例如,可以每天提供多批記錄給驗證器。
在B.M.Jakobsson和小B.S.Kaliski于2003年7月31日提交的第10/631,989號美國專利申請“Method and Apparatus for Graph-BasedPartition of Cryptographic Functionality”中描述了一種典型的預訂模型,在這里將其引入作為參考,其中它允許驗證器在有限的時間段內鑒別用戶。在Jakobsson-Kaliski的專利申請中,驗證器提供中間種子,從這個中間種子可以導出和驗證其它種子和/或鑒別值,例如令牌輸出。但是在這里,給驗證器提供令牌輸出的散列值(或者從中可以產生它們的信息),并通過這些散列值鑒別用戶。在Jakobsson-Kaliski的專利申請中具有中間種子的驗證器可以產生散列值的子集供本地使用,和/或將它們提供給其它驗證器。
在另一個實施例中,系統包括“會話”模型,其中驗證器僅在用戶用鑒別服務器成功鑒別之后獲取給定用戶的一批記錄。由該批覆蓋的時間段典型地將對應于單個用戶會話的長度,例如幾分鐘到幾小時,取決于安全政策。驗證器在會話期間通過該批記錄可以重新鑒別用戶,而不需另外連接到鑒別服務器。
可以在用戶成功鑒別之后直接由鑒別服務器將這一批記錄提供給一個或者多個驗證器,與預訂模型類似。
該批記錄也可以通過用戶計算機間接提供給一個或者多個驗證器。在用戶成功地通過鑒別服務器的鑒別之后,該批記錄將提供給用戶計算機。該用戶計算機將立即或者隨后將該批記錄轉發至驗證器。
多批記錄可以包含在例如由鑒別服務器發布的SAML聲明(assertion)中(參見“Security Assertion Markup Language(SAML)vl.l”,Organization for the Advancement of Structured InformationStandards(OASIS),2003年8月)。所述記錄給驗證器提供從用戶獲取“擁有證據”的一種手段,即確認用戶繼續擁有與聲明連接的鑒別憑證(在這種情況下為令牌)。
驗證器還可以以“委托(delegation)”的形式相互分配所述批。作為一個例子,應用服務器可以分配一批記錄給另一個應用服務器,從而使后者也能夠鑒別用戶,既可以為了提高可用性,又可以為了其本地目的。作為另一個例子,用戶的桌上型電腦可以分配一批記錄給用戶的膝上型電腦。批的轉發可以進一步持續到一串驗證器。
多個批的分配采用某種手段來鑒別這個批是正確的,也就是說,它對應于令牌的實際鑒別字符串。否則,攻擊者有可能通過構造聲稱其與用戶相關的新的一組記錄來假冒用戶,但是攻擊者知道這組記錄的鑒別字符串,并換成提供這批記錄到驗證器。因此,應當包含數據鑒別例如消息鑒別碼(MAC)或者數字簽名,其中MAC或者數字簽名密鑰與鑒別服務器或者可以信任的另一官方機制相關。驗證器在接收或者使用一批記錄之前將檢查MAC或者數字簽名的正確性。也可以使用從鑒別服務器到驗證器的安全服務器鑒別通道。
每個記錄都可以具有自己的MAC或者數字簽名作為證據,雖然這樣做會給計算、存儲和傳輸方面增加開銷。完整的一批記錄也可以具有單個MAC或者簽名,但是這可能需要在驗證器之間傳輸整個批,并且不提供委托中同樣多的粒度。(例如,驗證器可能希望僅委托幾小時價值的記錄給其它驗證器,但是批本身可以跨越一整天。這種更詳細方式的一個優點在于限制了記錄的暴露,從而減少了攻擊者從中獲得記錄以開始搜索令牌輸出的機會)。
作為在簽署單獨的記錄與簽署完整批之間的折中,可以有利地應用各種散列型構造。例如,每個記錄都可以被看作散列樹的一片樹葉。通過標準技術將樹葉集合成散列樹,以及將簽名或者MAC應用至樹根。通過這種方式,可以在驗證器之間交換樹葉的任何子集(即記錄),以及從子集到根的路徑以及單個MAC或者簽名。葉的內容,每層的孩子的數量,以及樹的層數都可以改變,就象在標準技術里能夠理解的一樣。作為一個例子,可以將一個小時價值的記錄采集到一片樹葉中去,并且24個散列樹葉一起構成簽署的一個日根(a daily root)。這將在小時的基礎上給出粒度,這樣做對許多應用來說都是足夠的。
還應當注意涉及單獨驗證器的方法與B.Kaliski和M.Nystrom的“Password Protection Module”(2004年7月28日提交的臨時專利申請,具有美國臨時專利申請號60/591,672),以及B.Kaliski和M.Nystrom的,標題也是“Password Protection Module”(2004年7月2日提交的臨時專利申請,具有美國臨時專利申請號60/584,997)中的密碼散列方法兼容,在這里將它們引入作為參考。利用應用標識符對口令(或者更普遍地,鑒別字符串)進行散列處理以產生得到保護的口令,然后將其提供給應用(應用標識符是專用于應用組中一個給定應用的字符串,例如網址、URL或者應用的域名)。
散列處理步驟能夠防止遭到破壞的應用直接接收所述口令,然后它能夠將口令轉發至合法應用。當如上建議涉及多個驗證器時,最好提供得到保護的口令(即得到保護的鑒別字符串)給驗證器。這樣做同樣能夠防止遭到破壞的驗證器濫用獲得的信息在其它驗證器處假冒該用戶。因此提供的記錄對于驗證器都不相同,因為它們將基于受到保護的鑒別字符串,而后者取決于應用標識符以及令牌輸出。
可以方便地將Kaliski-Nystrom中建議的確認碼作為通過記錄保護的敏感數據的一部分。由于不知道鑒別字符串,這將防止獲得記錄的攻擊者針對驗證器進行假冒。
這里描述的斷開鑒別方法在其支持的鑒別結構方面特別靈活。雖然斷開機器本身的鑒別使用了令牌輸出,但是在已經成功地完成鑒別之后,可以恢復在其它應用處進行鑒別可能使用的密鑰或者其它敏感數據。例如,可以恢復私有簽名密鑰,其可以用在標準的基于公開密鑰的鑒別協議,例如SSL/TLS(參見T.Dierks和C.Allen的“The TLSProtocol Version 1.0”,IETF RFC 2246,1999年1月),或者作為SAML聲明的“擁有證據”。這樣,用戶可以利用標準的公開密鑰技術在應用處鑒別,同時僅擁有一次性通行碼鑒別令牌,與其它方法相比,減少了危害斷開機器上私有簽名密鑰的風險。(作為對比,在其它方法中,用戶可以通過鑒別令牌在可信服務器處鑒別,然后下載簽名私有密鑰,接下來在用戶計算機上存儲、解密。在這里該方法是有利的,因為該私有密鑰利用從令牌輸出導出的值進行了加密,因而獲得對用戶計算機上數據訪問的攻擊者不能容易地恢復該私有密鑰)。
在使用私有密鑰在其它應用處進行鑒別的情況下,可以每個記錄有單獨一個私有密鑰,每批記錄有單獨一個私有密鑰,或者在這兩者之間。由于對應的公開密鑰需要對所述應用可用,利用每批一個私有密鑰(因此每批單獨一個公開密鑰)的方法在對許多簽名方案的密鑰管理方面是有利的。但是,某些簽名方案具有每個記錄單獨一個私有密鑰,而每批仍舊只有一個公開密鑰的屬性。
作為一個例子,例如象編輯為M.Wiener,M.Bellare和S.Miner的“A Forward-Secure Digital Signature Scheme”,Advances inCryptology-Crypto’99 Proceedings,Lecture Notes in Computer Science(計算機科學演講筆記)第1666卷,Springer,1999中的轉發安全簽名方案,具有一個公開密鑰和一連串私有密鑰,其中后面的私有密鑰可以從早期的密鑰計算出來,但是反過來不行(驗證器可以確定在連續的可能的私有密鑰中使用的私有密鑰的位置)。這是有利的,因為能夠防止給定晚些時候被損害的一個私有密鑰的情況下,攻擊者偽造表現為較早的簽名。為此,可以為整個批預先計算各個私有密鑰,然后利用連續的記錄進行保護。與通常的轉發安全序列相比,這里最好是顛倒私有密鑰的順序,從而損壞給定時間間隔的私有密鑰的攻擊者僅僅能夠計算較早時間間隔的私有密鑰。假定后面時間間隔的敏感數據比較早的時間間隔具有更強的保護,如上所述,這種方法為私有密鑰提供了較好的兩級防護。
在這里也可以采用Merkle或者散列樹簽名方案(參見斯坦福大學電子工程系1979年R.Merkle的博士論文“Secrecy,Authentication,and Public Key Systems”;還有編輯是M.Joye,Topics inCryptology-CT-RSA 2003 Proceedings,Lecture Notes in ComputerScience(計算機科學演講筆記)第2612卷中,M.Jakobsson,F.T.Leighton,S.Micali和M.Szydlo的“Fractal Merkle Tree Representationand Traversal”,Springer,2003),既然它也具有單個公開密鑰(樹根),而對于不同的簽名操作具有不同的私有密鑰(樹葉集合),例如對每個記錄。這種方案向前和向后都是安全的;單個私有密鑰的損害不會導致能夠計算出任何一個方向上任何其它私有密鑰。
可以支持許多其它鑒別協議。例如,為了在應用處鑒別,可以恢復共享對稱密鑰。共享密鑰例如可以是Kerberos鑒別系統中的密鑰。作為另一個例子,可以恢復會話狀態,從中可以恢復SSL/TLS會話。恢復出來的敏感數據也可以是“虛擬”或者“軟”鑒別令牌的種子,然后可以使用其輸出在其它應用處進行鑒別。作為另一個例子,可以恢復不同令牌的令牌輸出。此外,敏感數據可以包括散列函數的輸入,其中所述散列函數的輸出可以用于其它應用,并提供輸入作為在該應用處進行鑒別的證據。
作為另一個例子,B_i值本身可以用作同時共享記錄的另一個驗證器的“鑒別證據”,例如視窗域控制器。用戶計算機將提供從給定的令牌輸出獲得的B_i值給所述另一個驗證器,該另一個驗證器將確定B_i值是否能夠將其E_i值的副本正確地解密。
用于鑒別協議的敏感數據的又一個例子將是SAML聲明或者其它已簽署值,可以將它呈現給其它應用作為用戶鑒別的證據。可以由鑒別服務器提供一個或者多個SAML聲明,并對不同的時間間隔對它們加密。在驗證器處成功的鑒別將恢復這些聲明,這些聲明將被提供給其它應用。這樣做為驗證器提供了“自發布”性能,其中在驗證器處很容易獲得一系列預計算聲明,而不用與鑒別服務器交互。因此該聲明有可能具有較短的生命期,因此比普通由鑒別服務器發布的聲明要“新”,同時保持相對較長的會話。(例如,日常可以通過驗證器從鑒別服務器下載一組記錄,保護僅具有一小時生命期的會話。用戶每天僅僅需要與鑒別服務器交互一天,并且一小時將需要在驗證器處鑒別一次以獲取新的聲明)。
按照小B.S.Kaliski的第6,085,320和6,189,098號美國專利“Client/Server Protocol for Proving Authenticity”,不必對整個SAML聲明加密。相反,僅僅加密驗證該聲明必需的信息就足夠了,例如該聲明的簽名,或者散列函數的輸入,其中散列函數的輸出是該聲明的一部分。
根據上述實施例,本領域技術人員將會理解本發明進一步的特征和優點。因此,本發明并不局限于已經特別表示和描述的部分,而是由所附的權利要求書表示。在這里明確地將這里引用的所有公開物和參考物整體引入作為參考。
權利要求
1.一種方法,用于在驗證器處鑒別擁有鑒別令牌的用戶,該鑒別令牌能夠提供一個或者多個一次性的通行碼,該方法包括獲取驗證記錄;獲取提交以鑒別該用戶的通行碼;以及確定所提交的通行碼是否與所述驗證記錄一致,其中所述驗證記錄是參考通行碼的函數。
2.如權利要求1所述的方法,其中所述驗證器為個人計算機。
3.如權利要求1所述的方法,其中所述驗證器為應用服務器。
4.如權利要求1所述的方法,其中所述一次性通行碼是作為令牌秘密的函數產生的。
5.如權利要求4所述的方法,其中所述驗證器與所述令牌秘密隔離。
6.如權利要求4所述的方法,其中所述令牌秘密是響應事件而更新的。
7.如權利要求1所述的方法,其中所述一次性通行碼是作為時間變量的函數產生的。
8.如權利要求1所述的方法,其中所述一次性通行碼是作為事件變量的函數產生的。
9.如權利要求1所述的方法,其中所述通行碼是作為詢問值的函數產生的。
10.如權利要求1所述的方法,其中所述一次性通行碼是作為PIN的函數產生的。
11.如權利要求1所述的方法,其中用于產生所述一次性通行碼的函數包括從所述令牌秘密產生令牌碼,并將該令牌碼與所述PIN結合。
12.如權利要求1所述的方法,其中所述一次性通行碼是作為存儲在鑒別服務器上的令牌秘密的函數產生的。
13.如權利要求1所述的方法,其中所述鑒別服務器產生所述參考通行碼的至少一部分。
14.如權利要求12所述的方法,其中所述令牌秘密存儲在所述鑒別令牌中。
15.如權利要求1所述的方法,其中所述鑒別令牌產生所提交的通行碼的至少一部分。
16.如權利要求1所述的方法,其中一個或者多個令牌碼存儲在所述鑒別令牌中,并且所述提交的通行碼是作為所述令牌碼之一的函數而獲得的。
17.如權利要求1所述的方法,其中所述驗證記錄是從鑒別服務器獲取的。
18.如權利要求17所述的方法,其中所述鑒別服務器產生所述驗證記錄。
19.如權利要求17所述的方法,其中所述驗證記錄是從中介物獲得的,其中所述中介物從所述鑒別服務器獲取所述驗證記錄。
20.如權利要求19所述的方法,其中所述中介物是個人計算機。
21.如權利要求19所述的方法,其中所述中介物是應用服務器。
22.如權利要求1所述的方法,其中所述驗證記錄是作為包含多個驗證記錄的數據結構的一部分而獲得的。
23.如權利要求1所述的方法,其中所述驗證記錄是作為被鑒別數據結構的一部分而獲得的。
24.如權利要求23所述的方法,其中所述被鑒別數據結構是SAML聲明。
25.如權利要求1所述的方法,其中所述驗證記錄存儲在所述驗證器中。
26.如權利要求1所述的方法,其中所述提交的通行碼的至少一部分是通過用戶交互獲得的。
27.如權利要求1所述的方法,其中所述提交的通行碼的至少一部分是通過有線和/或無線通信鏈路獲得的。
28.如權利要求1所述的方法,其中所述提交的通行碼的一致性是相對于多個驗證記錄確定的。
29.如權利要求1所述的方法,其中用于產生所述驗證記錄的所述函數包括密碼散列函數。
30.如權利要求29所述的方法,其中所述密碼散列函數被多次迭代。
31.如權利要求29所述的方法,其中用于產生所述驗證記錄的函數包括密碼時間鎖難題(a cryptographic time-lock puzzle)。
32.如權利要求29所述的方法,其中所述驗證記錄包括參考散列通行碼,其中所述參考散列通行碼是對所述參考通行碼應用單向函數的結果。
33.如權利要求32所述的方法,還包括對所述提交的通行碼應用所述單向函數以獲得散列通行碼;將所述散列通行碼與所述參考散列通行碼進行比較;以及至少部分地基于所述比較是否成功來確定一致性。
34.如權利要求1所述的方法,其中所述驗證記錄包括加密的數據元素,其中所述加密的數據元素是利用密鑰對數據元素進行加密的結果,其中所述密鑰是對所述參考通行碼應用單向函數的結果。
35.如權利要求34所述的方法,還包括對提交的通行碼應用所述單向函數以獲取密鑰;利用該密鑰對所述加密的數據元素進行解密以恢復該數據元素;以及至少部分地基于該解密操作是否成功來確定一致性。
36.如權利要求34所述的方法,還包括對提交的令牌碼應用所述單向函數以獲取密鑰;利用該密鑰對加密的數據元素進行解密以恢復該數據元素;使用該數據元素;以及至少部分地基于該數據元素的使用是否成功來確定一致性。
37.如權利要求34所述的方法,其中所述數據元素包括視窗口令。
38.如權利要求34所述的方法,其中所述數據元素包括用于另一個鑒別操作的胡椒值的至少一部分。
39.如權利要求34所述的方法,其中所述數據元素包括用于另一個鑒別操作的提示值。
40.如權利要求34所述的方法,其中所述數據元素包括第二密鑰。
41.如權利要求40所述的方法,還包括獲取第二加密數據元素,其中所述第二加密數據元素是利用所述第二密鑰對第二數據元素進行加密的結果。
42.如權利要求41所述的方法,其中所述第二數據元素包括視窗口令。
43.如權利要求41所述的方法,其中所述第二數據元素包括提示值。
44.如權利要求41所述的方法,其中所述數據元素包括敏感數據。
45.如權利要求1所述的方法,其中用于產生所述驗證記錄的函數的輸入也包括PIN值的函數。
46.如權利要求45所述的方法,其中所述PIN值的函數包含比整個PIN值少的信息,從而有不止一個PIN值與所述驗證記錄一致。
47.如權利要求46所述的方法,其中從錯誤的PIN產生的驗證記錄也存儲在所述驗證器中。
48.如權利要求1所述的方法,其中用于產生所述驗證記錄的函數的輸入也包括鹽值。
49.如權利要求48所述的方法,其中所述驗證記錄包括所述鹽值。
50.如權利要求48所述的方法,其中所述鹽值的一部分或者全部包含在另一個驗證記錄中。
51.如權利要求50所述的方法,還包括測試與一個或者多個其它驗證記錄中鹽值的一致性。
52.如權利要求1所述的方法,其中用于產生所述驗證記錄的函數的輸入也包括胡椒值。
53.如權利要求52所述的方法,還包括對一個或者多個可能的胡椒值測試一致性。
54.如權利要求1所述的方法,其中用于產生所述驗證記錄的函數的輸入也包括提示值。
55.如權利要求55所述的方法,其中所述提示值是從一個或者多個其它鑒別操作恢復的。
56.如權利要求1所述的方法,在(a)之前還包括,對所述驗證記錄進行加密以產生加密的驗證記錄,其中(a)還包括獲取解密密鑰;以及對加密的驗證記錄進行解密以恢復該驗證記錄。
57.如權利要求56所述的方法,其中所述解密密鑰是從緊急訪問碼導出的。
58.如權利要求56所述的方法,其中所述解密密鑰是從另一個驗證操作中恢復的密鑰導出的。
59.如權利要求1所述的方法,其中用于產生所述驗證記錄的函數的輸入還包括第二參考通行碼的至少一部分。
60.如權利要求59所述的方法,其中(c)還包括測試所述驗證記錄與所述參考通行碼和第二參考通行碼的至少一部分的一致性。
61.如權利要求1所述的方法,其中所述鑒別令牌是在計算機上實現的軟件令牌。
62.如權利要求1所述的方法,還包括隨著時間的流逝而增加在攻擊中確定所述驗證記錄與通行碼的一致性所需的工作量。
63.一種服務器,包括處理器,用于處理作為參考通行碼函數的多個驗證記錄;以及接口,用于從所述服務器下載所述多個記錄到代理,以使所述代理能夠確定提交的通行碼是否與所述驗證記錄中給定的一個一致,所述驗證記錄用于鑒別擁有能夠提供通行碼的鑒別令牌的用戶。
64.如權利要求63所述的服務器,其中所述參考通行碼是作為所述令牌秘密的函數產生的。
65.如權利要求63所述的服務器,其中所述參考通行碼是作為時間變量、事件變量以及詢問值中一個或者多個的函數產生的。
66.如權利要求63所述的服務器,其中所述多個驗證記錄是從中介物獲得的。
67.如權利要求63所述的服務器,其中所述驗證記錄包括參考散列通行碼,其中所述參考散列通行碼是對所述參考通行碼應用單向函數的結果。
68.如權利要求67所述的服務器,其中對提交的通行碼應用所述單向函數以獲得散列通行碼,該散列通行碼用于與所述參考散列通行碼進行比較,以至少部分地基于該比較是否成功來確定一致性。
69.如權利要求63所述的服務器,其中所述驗證記錄包括加密的數據元素,其中所述加密的數據元素是利用密鑰對數據元素進行加密的結果,其中所述密鑰是對所述參考通行碼應用單向函數的結果。
70.一種計算機,包括存儲器,用于存儲作為參考通行碼的函數產生的多個驗證記錄;以及處理器,連接至該存儲器,以確定提交到該計算機的通行碼是否與所述多個鑒別記錄中給定的一個一致,以鑒別鑒別擁有能夠提供通行碼的鑒別令牌的用戶。
71.如權利要求70所述的計算機,其中所述參考通行碼是作為所述令牌秘密的函數產生的。
72.如權利要求70所述的計算機,其中所述參考通行碼是作為時間變量、事件變量以及詢問值中一個或者多個的函數產生的。
73.如權利要求70所述的計算機,其中所述多個驗證記錄是從鑒別服務器獲得的。
74.如權利要求70所述的計算機,其中所述驗證記錄包括參考散列通行碼,其中所述參考散列通行碼是對所述參考通行碼應用單向函數的結果。
75.如權利要求74所述的計算機,其中對提交的通行碼應用所述單向函數以獲得散列通行碼,該散列通行碼用于與所述參考散列通行碼比較,以至少部分地基于該比較是否成功來確定一致性。
76.如權利要求75所述的計算機,其中所述驗證記錄包括加密的數據元素,其中所述加密的數據元素是利用密鑰對數據元素進行加密的結果,其中所述密鑰是對所述參考通行碼應用單向函數的結果。
77.一種產品,包括存儲介質,其中存儲了指令,由機器執行時導致以下過程通過以下過程在驗證器中鑒別擁有能夠提供一個或者多個一次性通行碼的鑒別令牌的用戶獲取驗證記錄;獲取提交以鑒別該用戶的通行碼;以及確定提交的通行碼是否與所述驗證記錄一致,其中所述驗證記錄是參考通行碼的函數。
78.如權利要求77所述的產品,其中所述參考通行碼是作為所述令牌秘密的函數產生的。
79.如權利要求78所述的產品,其中所述參考通行碼是作為時間變量、事件變量以及詢問值中一個或者多個的函數產生的。
80.如權利要求77所述的產品,其中所述驗證記錄包括參考散列通行碼,其中所述參考散列通行碼是對所述參考通行碼應用單向函數的結果。
81.如權利要求80所述的產品,其中對提交的通行碼應用所述單向函數以獲得散列通行碼,該散列通行碼用于與所述參考散列通行碼比較,以至少部分地基于該比較是否成功來確定一致性。
82.如權利要求77所述的產品,其中所述驗證記錄包括加密的數據元素,其中所述加密的數據元素是利用密鑰對數據元素進行加密的結果,并且其中所述密鑰是對所述參考通行碼應用單向函數的結果。
全文摘要
在用于斷開鑒別的系統中,將對應于預定時間段內給定的鑒別令牌輸出的驗證記錄、事件序列和/或詢問組下載至驗證器。這些記錄包括對給定鑒別令牌輸出的加密或者散列信息。在一個使用時間間隔的實施例中,對于每個時間間隔,令牌輸出數據、鹽值以及胡椒值都被散列處理,并與該時間間隔的驗證記錄進行比較。在比較成功之后,用戶可以訪問該計算機。也可以提供PIN值作為該散列函數的輸入。可以將該散列函數輸出的一部分用作對加密的(視窗)口令或者其它敏感信息解密的密鑰。
文檔編號G06F21/00GK1879072SQ200480033059
公開日2006年12月13日 申請日期2004年9月10日 優先權日2003年9月12日
發明者安德魯·納諾普洛斯, 卡爾·阿克曼, 皮爾斯·鮑內斯, 威廉·杜安, 馬庫斯·雅各布松, 布特·卡利斯基, 德米特里·帕爾, 沙恩·D·賴斯 申請人:Rsa安全公司