專利名稱:遠程認證和交易簽名的制作方法
遠程認證和交易簽名
背景技術:
隨著計算機系統和應用的遠程訪問日益普及,通過公共網絡如因特網來遠程訪問
的交易數目和種類已經急劇增加。這一普及已經特別地凸顯對安全性的需要。 a.如何確保遠程訪問應用的人士是他們所聲稱的人士以及如何確保遠程進行的 交易由合法個人發起。這一主題稱為認證。 b.如何確保交易數據在被應用服務器接收到之前未被更改。這稱為數據完整性。 c.如何保證個人一旦已經參與交易就不能夠賴債。這稱為認可。 應用提供者以往一直依賴于靜態口令來為遠程應用提供安全性。在過去數年已經
變得明顯的是,靜態口令是不足的,并且要求更高級的安全技術。 PKI智能卡 —種解決與通過公共網絡對計算機系統和應用的遠程訪問關聯的安全問題的方 式由公共密鑰基礎結構提供。在公共密鑰基礎結構中,將公共-私用密鑰對與各用戶關聯。 密鑰對與將該公共-私用密鑰對綁定到特定用戶的證書(由受信任的證書當局簽發)關 聯。借助不對稱密碼術,這一公共-私用密鑰對可以用來
a.認證用戶, b.對交易、文檔、電子郵件簽名(以便防止賴債),以及
c.建立加密的通信通道。 為了保證足夠水平的安全性,強制各用戶的私用密鑰保持保密并且僅能由與該密 鑰關聯的合法用戶訪問(以例如創建簽名)。普遍依賴于智能卡來存儲公共-私用密鑰對 和證書,并且進行涉及到私用密鑰的密碼計算。通過卡來使用私用密鑰于是常常受PIN保 護。 具有PKI功能的智能卡正在并且已經由 a.公司簽發給它們的雇員或者客戶,以保障對它們的計算機網絡的登錄或者對它 們的應用的遠程訪問; b.銀行簽發給它們的客戶,以保障例如網上銀行應用;以及 c.政府簽發給它們的市民作為電子ID卡,以創建依法綁定的電子簽名。 除了優點之外,也存在一些與PKI以及攜帶PKI密鑰和證書的智能卡關聯的缺
點 a.在與有競爭力的安全技術比較時,構建公共密鑰基礎結構一般很復雜并且因此 成本高。 b.PKI內在地限于其中在客戶機與服務器之間有數字連接的環境和應用。換而
言之,它并不適合于電話銀行或者其它如下交付通道,在這些交付通道中,無法在一方面是
PKI證書和私用密鑰的容器與另一方面是應用服務器之間提供數字連接。 c. PKI智能卡沒有電源或者用戶接口。 PKI智能卡因此依賴于對接設備的存在,該
對接設備向卡提供電力,能夠以數字方式與卡交換數據,并且能夠與用戶對接(例如捕獲 卡的PIN并且呈現應當簽名的數據)。在大多數情況下,使用具有連接透明的智能卡讀取器
9的PC。這減少了用戶的靈活性(許多PC未配備智能卡讀取器)。它也帶來了安全問題在 內在不安全的PC上完成所有用戶交互(比如批準簽名或者捕獲卡的PIN)。
強認證令牌 —種用于認證和交易簽名能力的可選技術由稱為'強認證令牌設備'的設備提供。 強認證令牌的典型例子是由Vasco Data Security公司提供的任一數字通(Digipass)令 牌,見網站Vasco. com。 強認證令牌是小型自治的由電池供電的設備,該設備具有它自己的顯示器和鍵 盤。在一些情況下,鍵盤簡化為單個按鈕或者甚至完全被省略。強認證令牌的主要目的在 于生成所謂的"一次性口令"(0TP)。在一些情況下,強認證令牌也能夠對在令牌的鍵盤上 已經輸入的數據生成電子簽名或者消息認證代碼(MAC)。如果令牌具有鍵盤,則對令牌的使 用常常由PIN保護。為了能夠生成OTP或者MAC,強認證令牌能夠基于用保密值或者密鑰參 數化的對稱密碼算法來完成密碼計算。用保密值或者密鑰參數化的這樣的對稱密碼算法的 典型例子是對稱加密/解密算法(比如3DES或者AES)和/或密鑰化(keyed)單向散列函 數(比如符合0ATH的令牌中的MD5或者SHA-1)。在本文的其余部分中,這樣的算法的輸出 有時會稱為'對稱密碼'。術語'對稱密碼'因此應當不僅理解為對稱加密算法的輸出,而且 理解為對稱解密算法或者密鑰化散列函數的輸出。用假設為對于每個個別令牌而言不同的 一個或者多個保密密鑰將強認證令牌私人化。為了生成一次性口令或者簽名,令牌通常執 行以下步驟(參照圖1): a.步驟IO :令牌取得某一輸入值(這可以是由服務器生成的并且由用戶在鍵盤上 鍵入的挑戰、和/或令牌的內部實時時鐘的值、和/或由令牌管理的內部計數器的值、和/ 或由用戶在鍵盤上鍵入的交易數據)。
b.步驟11 :令牌將輸入值表達成指定格式。 c.步驟12 :令牌然后將這一格式化的輸入提交到用安全地存儲于令牌中的私人 化保密密鑰15參數化的對稱加密/解密算法和/或單向散列函數。結果是密碼或者散列 值。 d.步驟13 :令牌將作為這一加密/解密或者單向散列的結果的密碼或者散列值變 換成實際的OTP或者MAC,即密碼或者散列通常被截取、以人類可讀格式轉換(例如通過十 進制換算)以及在顯示器上可視化。用戶可以將這個值提交到應用服務器。
在大多數情況下,強認證令牌是物理設備,然而在一些情況下,這些強認證令牌生 成OTP或者MAC簽名的功能由在PC、工作站、移動電話、個人管理器、PDA等上運行的軟件模 仿。后者稱為"軟令牌"。 —旦已經產生OTP或者MAC,就將它傳達到實體,在所述實體處可以驗證該值作為 認證用戶或者消息,參見圖2。該實體通常是應用服務器。應用服務器為各令牌存儲數據, 該數據包括已經用哪一個或者多個保密密鑰將令牌私人化以及與令牌關聯的用戶的身份。 為了使一次性口令或者簽名生效,服務器取回保密密鑰(115)(它是令牌中私人化的密鑰 的副本),取得令牌所用的相同輸入,并且進行本質上與令牌相同的算法112。服務器然后
比較120它獲得的結果與它接收的值。(在實踐中,如果強認證算法由于同步問題而基于 時間或者基于計數器,則OTP或者MAC的生效常常有些更復雜。)由于強認證令牌生成的 一次性口令或者簽名是令牌的個別保密密鑰和針對令牌算法的一個或者多個輸入的總是
10不同的值的函數,所以使一次性口令或者簽名的正確性生效向應用服務器給予了下述很高 置信度提交一次性口令或者簽名的個人擁有正確令牌并且知道它的PIN (如果令牌受PIN 保護),這又給予了下述高置信度該個人確實是與該令牌設備關聯的合法用戶。
由于OTP驗證服務器和OTP令牌本質上用相同密鑰進行相同算法,所以OTP生成 算法可以是單向或者不可逆函數。這意味著實際OTP可以比用來導出它的密碼或者散列值 更短。這允許充分短的OTP或者MAC長度,從而用戶將OTP或者MAC值從令牌顯示器手工 復制到PC上并非很不便。因而強認證令牌并不要求在令牌與認證服務器之間的數字連接。
強認證令牌在與PKI卡比較時的主要優點在于 a.它們為全自治(令牌具有它們自己的電源和它們自己的用戶接口 );
b.它們獨立于交付通道或者通信介質(令牌并不要求與任何其它設備的任何數 字或者電子連接;所有數據輸入和輸出由用戶經由令牌的顯示器和鍵盤來完成);以及
c.它們提供很高水平的安全性(所有用戶交互(比如捕獲PIN或者提供待簽名的 交易數據)都經由令牌自己的安全用戶接口來完成)。 在其中已經簽發智能卡的一些情況下,想要回避與智能卡關聯的缺點和限制,并
且實現強認證令牌提供的相同優點,即全自治、獨立于交付通道和安全用戶接口。 —種可選方式是組合智能卡與未連接的由電池供電的智能卡讀取器,該讀取器具
有它自己的顯示器和鍵盤。想法是智能卡與未連接的智能卡讀取器的組合模仿強認證令
牌。強認證令牌通常提供的功能然后在智能卡與未連接的讀取器上劃分。未連接的讀取器
負責所有用戶接口 ,而其它令牌功能的全部或者部分交給卡。 通常,所有私人化的秘密和對安全性敏感的數據由卡存儲和管理(例如PIN由卡 存儲和驗證,保密密鑰存儲于卡上,而涉及到這些密鑰的所有密碼運算由卡完成,作為用于 令牌算法的輸入來使用的計數器由卡存儲和管理)。令牌功能的敏感性較低的部分(例如 截取和轉換生成的散列或者密碼)常常出現在讀取器中。下文討論這一組合的例子。
這一原理常常由銀行使用,這些銀行組合它們簽發的銀行卡(用于在自動取款機 或者銷售點終端使用)與未連接的讀取器,以保護它們的遠程銀行應用(比如網上銀行或 者電話銀行)。這一點的適合例子是MastercardChip Authentication Programme (CAP), 該CAP指定EMV智能卡可以如何與未連接的智能卡讀取器組合,以生成一次性口令和電子 交易數據簽名。 這一技術依賴于智能卡能夠完成對稱密碼運算,并且已經用保密密鑰來私人化, 以用于對稱密碼運算。然而,具有PKI功能的智能卡被設計成存儲不對稱密鑰并且完成不 對稱密碼運算。許多具有PKI功能的智能卡并不支持對稱密碼運算或者(如果它們支持 則)從未用個別對稱保密密鑰來私人化。
傳統PKI簽名 用PKI智能卡創建電子簽名的常用方式是輸入數據(輸入數據通常由想要簽名的 實際交易數據的散列構成)由卡的私用密鑰加密。 使這樣的簽名生效的常用方式是生效實體用公共密鑰對接收的簽名解密。如果簽 名的解密獲得與假設已經由私用密鑰加密的輸入數據相同的值,則使簽名成功生效。注意 由于這一不對稱特性,生效實體從不需要訪問卡的私用密鑰。這允許私用密鑰向簽名方以 外的任一方、甚至向任何驗證方保密,由此提供真正的認可。
只有簽名本身在整體上可為生效實體所用,才可以成功完成這一點。不完整簽名 的解密將僅獲得不能與假設已經簽名的輸入數據比較的無意義數據。 在實踐中,當使用小型手持未連接的智能卡讀取器時,不能滿足這一條件假如典 型PKI簽名大小為100字節數量級,那么這些讀取器的顯示器小到遠遠無法顯示全部簽名, 并且在任何情況下期望用戶將100字節的值從讀取器的顯示器手工傳送到PC而不犯一個 錯誤全然不切實際。100字節的典型PKI簽名應當與傳統強認證令牌的典型6到8數位或 者3到4字節的OTP或者MAC比較。這的確是不對稱密碼術和私用密鑰為何尚未用來例如 通過強認證令牌生成OTP和MAC的原因。
希望的是如下方法和裝置,該方法和裝置 a)允許將存儲PKI私用密鑰的設備(比如具有PKI功能的智能卡或者USB棒)用 來認證用戶并且對交易進行簽名, b)如果沒有必要,則無需任何用戶應用與容納私用密鑰的設備具有某種直接或者 間接數字連接、特別是如下數字連接,該數字連接將允許用戶應用將數據提交到卡,以便由 卡的私用密鑰簽名,并且將允許從卡取回整個所得簽名, c)無需容納私用密鑰的具有PKI功能的設備(例如PKI智能卡或者USB棒)
1)支持對稱密碼運算;或者 2)已經用可以由適當讀取器讀取的一些保密或者機密數據元來私人化。
發明內容
本申請提供對一種滿足上述希望的方法和裝置的描述。具體而言,本申請描述多 個實施例,這些實施例使用公共_私用密鑰對中的私用密鑰(將用于不對稱密碼術例如RSA 算法的密鑰)來認證用戶(經由OTP的生成)或者對數據簽名(經由MAC的生成)。
這里描述的實施例與傳統上使用私用密鑰來認證用戶和對數據進行簽名(如上 所述)的不同之處在于 a)使用相同密碼術密鑰來生成和驗證OTP和MAC ;并且 b)OTP和MAC值的位長度可以安全地顯著少于私用密鑰生成的密碼的位長度。
所有實施例的共同之處在于 a)它們都借助密碼算法使用一個或者多個可變輸入來計算動態值,所述密碼算法
使用驗證服務器也已知或者可訪問的秘密。 b)這些可變輸入可以是以下輸入中的任何輸入 1)時間值,或者 2)計數器值,或者 3)挑戰值,或者 4)交易數據,或者 5)上述輸入的任何組合。 c)動態值然后被變換成OTP或者MAC。 d)在開發OTP或者MAC的過程中的某一點,執行利用私用密鑰的不對稱密碼運算 (即加密或者解密或者簽名)。 e)將動態值變換成OPT或者MAC,使得OTP或者MAC的長度或者大小小于不對稱
12密碼運算使用私用密鑰生成的密碼的大小。 利用私用密鑰的不對稱密碼運算在生成OTP或者MAC的整個處理中的確切作用可 以隨著實施例而不同。 在一些實施例中,每當不得不生成OTP或者MAC時,進行利用私用密鑰的不對稱密 碼運算。在其它實施例中,可以與利用私用密鑰的單個不對稱密碼運算結合生成多于一個 的OTP或者MAC。在后一種情況下,可以在需要生成新OTP或者MAC時對是否要求利用私用 密鑰的新不對稱密碼運算進行確定的標準可以包括
a)從上次不對稱密碼運算起已經過去的時間。
b)已經生成的OTP和/或MAC的數目。 c)在包含私用密鑰的設備與捕獲輸入并且使OTP可用的設備之間的通信會話是 否一直不間斷(例如是否尚未從智能卡讀取器移開PKI智能卡)。 d) OTP或者MAC的類型。例如,MAC的生成可能總是要求新的不對稱密碼運算,但 是OTP的生成不會要求。 在一個典型實施例中,使用僅一個私用密鑰,并且用該私用密鑰進行僅一個不對 稱密碼運算。然而,一些實施例可以用單個私用密鑰或者用多個私用密鑰進行多個密碼運 算。例如 a)如果OTP是私用密鑰對可變輸入進行的加密結果的函數,則變體可以是OTP是
多于一個的密碼的函數,或者可變輸入由多于一個的私用密鑰加密以生成OTP。 b)如果OTP的生成僅在通過檢查卡的私用密鑰對挑戰進行的加密結果來驗證特
定智能卡的存在之后發生,則變體可以是將多于一個的挑戰提交到卡以由卡的私用密鑰加密。 c)在許多情況下,PKI卡包含所謂實用私用密鑰和簽名私用密鑰。在該情況下,如 果生成OTP則可以使用實用密鑰,而如果生成MAC則可以使用簽名密鑰。
在一個優選實施例中,可以生成用于認證用戶的OTP和用于對數據簽名的MAC。然 而,替代實施例可以限于僅能夠生成OTP或者僅能夠生成MAC簽名。 在一個典型實施例中,與私用密鑰一起使用的不對稱密碼算法將是RSA算法。然 而,其它實施例可以使用其它不對稱算法,只要它們能夠通過使用私用密鑰來實現加密或 者解密或者簽名功能。這樣的算法的例子包括RSA、漸縮算法(比如Merkle-Hellman或者 Chor-Rivest、Pohlig-Hellman、Diffie-Hellman、ElGamal、Schnorr、Rabin)、橢圓曲線密碼 系統、有限自動機公共密鑰密碼系統、數字簽名算法(DAS、DSS)。 在一個典型實施例中,包含私用密鑰的部件以及生成OTP和MAC值的部件是兩個 不同部件,各部件是兩個不同設備的部分。然而,可以容易地設想如下實施例,在這些實施 例中,這兩個部件是相同設備的部分或者甚至是相同部件。 在一個典型實施例中,私用密鑰存儲于智能卡上。在一個優選實施例中,涉及到私 用密鑰的密碼計算由該智能卡進行。在一個典型實施例中,OTP和/或MAC值由如下設備 生成,該設備配備有或者連接到可以與包含私用密鑰的智能卡通信的部件或者設備。
在一個優選實施例中,卡讀取設備是未連接的智能卡讀取器,該讀取器具有它自 己的電源,并且運行適當軟件以與已經插入智能卡讀取器中的PKI智能卡通信,以生成OTP 或者MAC。
在另一實施例中,卡讀取設備是一些計算設備如PC、PDA、蜂窩電話等的組合,這些 計算設備配備有智能卡讀取器,并且運行適當軟件以生成OTP或者MAC。
在一個典型實施例中,在智能卡與智能卡讀取器設備之間的通信的電性和協議方 面與ISO 7816標準中描述的方面相同或者相似。其它實施例可以使用其它通信裝置,比如 ISO 14443中描述的無接觸智能卡。 可選的形式因素可用于私用密鑰包含設備,并且可選的形式因素可用于OTP或者 MAC生成設備,而且可選的裝置可用于在一方面是私用密鑰包含部件或者設備與另一方面 是OTP和MAC生成部件或者設備之間的通信。這些可選的因素和裝置處在如這里描述的本 發明的范圍內。 在一個實施例中,OTP或者MAC值可視化于卡讀取設備的顯示器上。OTP可以例如
由連串符號構成。在一個典型實施例中,這些符號是十進制數位。在其它實施例中,這些符
號可以例如包括 a)十六進制數位,或者 b)基本64數位,或者 c)來自書寫系統如字母表的字符,或者 d)象形文字。 在一個實施例中,生成的OTP或者MAC借助可聽信號送達到用戶。例如,OTP可以 是數位或者字符或者字詞的串,各數位或者字符或者字詞具有特性關聯音調或者由文字到 語音的轉換器讀取。 在一個實施例中,生成的OTP或者MAC借助某種電子有線或者無線通信機制直接 送達到應用程序。這一機制可以包括USB連接或者紅外線連接或者近場通信連接或者RF 連接或者藍牙連接。 可以提供用于OTP或者MAC的其它輸出機制。在一些實施例中,基于私用密鑰的 函數受PIN保護。 以下說明更具體地描述了基本實施例。在一些實施例中,在生成OTP或者MAC時 直接或者間接使用卡的基于私用密鑰的函數。 a)涉及到卡的私用密鑰的不對稱密碼運算是將可變輸入變換成OTP或者MAC(以 對稱方式使用不對稱算法)的這一變換的整體階段或者部分,或者 b)卡的基于私用密鑰的函數更間接用來提供種子值,該種子值用來導出OTP或者 MAC生成算法所用的保密對稱密鑰(使用不對稱密碼作為種子以導出保密密鑰)。
在一些實施例中,OTP和/或MAC的值是卡的私用密鑰的實際值的函數。在更多 其它實施例中,卡的基于私用密鑰的函數用來將讀取器中的OTP或者MAC生成算法解鎖
a)卡鏈接到已經私人化的讀取器,并且基于存儲的一個或者多個挑戰_響應對來 進行識別,或者 b)卡通過傳統的基于PK證書的驗證由讀取器認證。 在緊接在前段落中描述的實施例中,生成的OTP和/或MAC的值不是卡的私用密 鑰的實際值的函數。 因此在一個方面中,本發明提供一種用于生成包括一次性口令(OTP)或者消息認 證代碼簽名(MAC)的安全值的方法,該方法包括
獲得使用一個或者多個可變輸入和運用至少一個秘密的密碼算法來創建的中間 動態值; 將所述動態值變換成所述安全值, 其中,執行利用私用密鑰的不對稱密碼運算以產生密碼,以便變換所述動態值,并 且 所述變換包括產生大小比所述不對稱密碼運算生成的密碼的大小更小的所述安全值。 在另一方面中,本發明提供一種使用緊接上文描述的方法來生成包括一次性口令 (OTP)或者消息認證代碼簽名(MAC)的安全值的設備。 在另一方面中,本發明提供一種使用戶提供的安全值生效以便認證用戶或者與 用戶關聯的數據的方法,所述安全值包括一次性口令或者消息認證代碼簽名;所述方法包 括 使用參考密碼算法來創建參考密碼,該參考密碼算法使用與可信用戶的PKI私用 密鑰有關的服務器密鑰來應用于一個或者多個參考輸入,該參考密碼算法和一個或者多個 參考輸入被選擇為與可信用戶在創建安全值時所用的對應要素相同;
在這之后, 通過將所述參考密碼變換成參考安全值,單獨對所述參考密碼進行操作,包括產 生大小比參考密碼的大小更小的所述參考安全值,并且實現所述參考安全值與所述安全值 的比較,或者 對所述參考密碼和所述安全值兩者進行操作,以產生修改的參考密碼和修改的安 全值,對所述參考密碼進行的所述操作與為了創建所述安全值而執行的操作部分地相同, 并且實現修改的所述參考密碼與修改的所述安全值的比較,并且
根據所述比較的結果確定所述安全值的有效性。 在又一方面中,本發明包括一種支持指令序列的計算機可讀介質,這些指令在執 行時實現一種生成包括一次性口令(OTP)或者消息認證代碼簽名(MAC)的安全值的方法, 所述方法包括 獲得使用一個或者多個可變輸入和運用至少一個秘密的密碼算法來創建的中間 動態值; 將所述動態值變換成所述安全值, 其中執行利用私用密鑰的不對稱密碼運算以產生密碼,以便變換所述動態值,并 且 所述變換包括產生大小比所述不對稱密碼運算生成的密碼的大小更小的所述安全值。 最后在又一方面中,本發明包括一種指令序列的信息承載信號,這些指令在處理 器中執行時實現一種生成包括一次性口令(OTP)或者消息認證代碼簽名(MAC)的安全值的 方法,所述方法包括 獲得使用一個或者多個可變輸入和運用至少一個秘密的密碼算法來創建的中間 動態值; 將所述動態值變換成所述安全值,
其中執行利用私用密鑰的不對稱密碼運算以產生密碼,以便變換所述動態值,并 且 所述變換包括產生大小比所述不對稱密碼運算生成的密碼的大小更小的所述安全值。
現在在說明書的與以下附圖結合時的后文部分中進一步描述本發明的若干實施 例 圖1是現有技術的強認證令牌在生成MAC的OTP時的操作流程圖; 圖2是現有技術的服務器在認證由強認證令牌生成的OTP或者MAC時的操作及其
與OTP或者MAC生成的關系的流程圖; 圖3是依賴于使用PKI私用密鑰來創建從中生成OTP或者MAC的密碼的不對稱密 碼運算的本發明一個實施例的流程圖; 圖4是示出了在客戶機的OTP/MAC生成(例如如圖3中那樣)和在服務器的有關 認證的本發明一個實施例的流程圖; 圖5是使用不對稱密碼作為種子以導出在創建代表OTP或者MAC的密碼時所用密 鑰的本發明另一個實施例的流程圖; 圖6和圖7是其中智能卡用來向讀取器認證用戶的本發明又一實施例的流程圖, 該讀取器又產生從中導出OTP或者MAC的密碼,在這一實施例中,在初始操作中將用戶的智 能卡綁定到讀取器(圖6),而在圖7中表示了隨后的操作; 圖8和圖9是其中包括PKI證書的智能卡用來向讀取器認證用戶的本發明又一實 施例的流程圖,該讀取器又產生從中導出OTP或者MAC的密碼,在這一實施例中可以認證隨 機用戶; 圖IO和圖11圖示了為了捕獲允許本發明各種實施例操作的信息而在初始會話中 進行的動作; 圖12圖示了本發明實施例的操作背景;
圖13是第一生效過程的圖示;并且
圖14是另一生效過程的圖示。
具體實施例方式
本發明實施例的重要部件在圖12中被圖示為包括智能卡讀取器20(或者簡稱為 讀取器)和認證服務器30 (或者簡稱為服務器)。 讀取器20至少包括接口 28以接受智能卡和電源27。 一些讀取器也包括在圖12 中由鍵盤25代表的一個或者多個用戶可操作按鈕或者鍵。如這里使用的那樣,用戶將智能 卡插入智能卡接口 28中。由于讀取器20進行的某一操作,信息由讀取器生成。該信息可以 是一次性口令(0TP)。如果交易數據輸入到讀取器,則生成的信息可以包括簽名,比如MAC。 輸出信息可以呈現于顯示器如顯示器26上。代替地,讀取器可以用數字方式連接到網絡。 在該情況下,信息可以呈現給也連接到網絡的另一實體,而顯示器26可能是不必要的。通 常,讀取器20生成的信息用來認證個人或者消息。可以通過使用智能卡(證明擁有該卡)和一些其它信息(比如PIN或者其它用戶數據)來認證個人。讀取器接受智能卡和其它信 息并且創建0TP。 0TP送達到服務器30。代替地,消息由讀取器20簽名從而產生MAC,而該 MAC送達到服務器30。 服務器30通常被實施為具有處理能力和數據庫35的計算機。讀取器生成的信息 經由數據路徑40送達到服務器30。數據路徑40可以采用各種形式。通常,用戶將信息從 顯示器26手工傳送到連接至服務器30的客戶機設備。代替地,數據路徑40可以包括允許 信息從讀取器20送達到服務器30的數字路徑。作為另一可選方式,數據路徑可以運送音 頻信息,比如運送如下用戶的語音的電話電路,該用戶念出在顯示器26上向用戶呈現的信 息;其中該信息可以是OTP或者MAC。數據路徑40可以運送代表在讀取器20生成的信息 的光學信號。 一般而言,數據路徑40是可以用來將信息從讀取器20送達到服務器30的任 何路徑。服務器30接受0TP或者MAC,并且借助數據庫35中的數據來確定是接受還是拒絕 該信息作為使用戶的身份(OTP)或者消息的可信性(MAC)生效。下文更具體地描述服務器 30所用的具體過程和數據。服務器30的一個輸出端選擇接受或者拒絕狀態36,從而反映 接受OTP作為使用戶的身份聲明的可信性生效,或者反映使MAC生效作為認證關聯消息。
IU趣材,,趣徵去 在這一實施例(見圖3)中,智能卡100與智能卡讀取器105配合。智能卡100存 儲在不對稱密碼運算中使用的PKI私用密鑰301。卡的基于私用密鑰的函數(即涉及到卡 的私用密鑰的不對稱密碼運算,比如簽名或者解密)是產生OTP或者MAC的過程的整體階 段或者部分。 OTP和/或MAC的生成以如下方式發生
步驟99 :捕獲將在以后步驟中所用的輸入值。 步驟101 :用于OTP或者MAC生成算法的一個或者多個輸入被變換或者格式化成 初始值。 步驟102 :初始值由卡的私用密鑰301簽名或者加密/解密。
步驟103 :將所得密碼變換成OTP或者MAC。 在圖3的例子中,OTP或者MAC僅為不對稱密碼運算的結果的函數。然而在其它 實施例中,OTP或者MAC也可以是包括如下值的其它數據元的函數,這些值是可變輸入的函 數,但不是私用密鑰301的函數。 在一個典型實施例中,向OTP或者MAC生成算法的一個或者多個輸入與用于傳統 強認證令牌中所用的一個或者多個強認證算法的輸入相同或者相似。換而言之,這些輸入 可以選擇為
時間值,或者 挑戰(通常由服務器提供),或者
計數器值,或者
交易數據,或者
上述輸入的任何組合。 在一些實施例中,向OTP/MAC生成算法的一個或者多個附加輸入或者參數可以包 括 標識服務的數據(例如讀取器序列號),或者
17
存儲于設備中的秘密,或者 用戶標識數據,或者 用戶提供的保密代碼或者保密值。 為了將這些一個或者多個輸入格式化成初始值,步驟101可以比如包括以下操 作 并置,或者
散列,或者 利用對稱密碼算法(例如使用設備中存儲的或者用戶提供的保密密鑰)的加密/ 解密。 為了將所得密碼變換成最終OTP或者MAC值,步驟103可以包括以下操作
散列(可能是使用讀取器105中存儲的或者用戶提供的保密密鑰的密鑰化散列), 或者 利用對稱密碼算法(例如使用讀取器105中存儲的或者用戶提供的保密密鑰)的
加密/解密,或者 截取,或者 選擇某些位、半字節或者字節,或者
十進制換算。后者可以實現如下 將待十進制轉換的位串解釋為數的大型二進制代表,或者按位組劃分待十進制轉 換的位串,并且將各位組映射到十進制數位。典型例子是將位串劃分成半字節,并且根據以 下規則將各半字節映射到十進制數位。如果半字節的十六進制值為0x0到0x9,則取得具有 相同值的十進制數位;如果半字節的十六進制值為OxA到OxF,則減去常數(在0x6與OxA 之間),然后取得值與相減的結果相同的十進制數位,或者
本領域技術人員已知的許多其它十進制換算算法。 現在描述生效階段。在這一實施例中,生效服務器具有用來生成OTP或者MAC值 的私用密鑰301的副本,并且使用它來進行與用于生成OTP或者MAC值的算法本質上相同 的算法。生效服務器(參照圖4)以某種方式獲得或者重構或者猜測在生成OTP或者MAC時作為向OTP
或者MAC生成算法的一個或者多個輸入來使用的數據元的一個或者多個值 在時間值的情況下,生效服務器可以具有它自己的與用于生成OTP或者MAC的時
鐘同步的時鐘, 在挑戰的情況下,挑戰可以已經由生效服務器本身生成,或者可以已經由應用與 接收的OTP或者MAC —起傳遞到生效服務器, 在計數器的情況下,生效服務器可以維護它自己的與用于生成OTP或者MAC的計 數器值同步的計數器值, 在交易數據的情況下,這些數據可以已經由應用與接收的OTP或者MAC —起傳遞 到生效服務器; 將用于OTP或者MAC生成算法的一個或者多個輸入變換成初始值。 隨后使用由生效服務器保持的私用密鑰301的副本對初始值簽名或者加密/解密
(402)。生效服務器然后比較(403)所得參考密碼與接收的OTP或者MAC值。如果所得參考密碼與接收的OTP或者MAC值匹配,則使簽名成功生效。可以用多種方式完成這一比較 生效服務器在一些實施例中可以將參考密碼變換成參考OTP或者MAC值,并且比
較參考OTP或者MAC值與接收的OTP或者MAC值(例如通過檢驗它們是否相同),或者 生效服務器可以根據接收的OTP或者MAC值來重構由私用密鑰生成的原密碼的部
分,并且比較這一部分密碼與參考密碼的一個或者多個對應部分,或者 生效服務器可以將參考密碼變換成第一中間生效值,并且將接收的OTP或者MAC
變換成第二中間生效值,并且比較第一和第二中間生效值。 以下例子可以說明這一點(見圖14)。在這一例子中,基于如下密碼來產生OTP或 者MAC,該密碼是使用私用密鑰1308的不對稱加密的結果。服務器產生如下參考密碼,該參 考密碼也是使用如下密鑰1324的不對稱加密的結果,該密鑰是私用密鑰1308的副本。如 圖14中所示-讀取器1350通過以下操作根據所述原密碼來計算OTP或者MAC :
O選擇所述所得密碼的每個字節的每個第一位(1355),并且
O將選擇的所述位并置成位串(1356),并且 O將所述位串解釋為數的二進制說明,并且通過取得所述數的十進制代表來獲得 OTP或者MAC (1357)-生效服務器使這一 OTP或者MAC生效如下 O服務器通過將每個字節的除了每個第一位之外的所有位設置成1來修改參考 密碼(1364),并且 O服務器將接收的OTP或者MAC解釋為數的十進制代表,并且通過取得該數的二 進制代表來獲得位串(1359),并且 O服務器通過將所述位串的每一位替換成如下字節來擴展所述位串(1360),該字 節由附加以七個1位來擴展的該位構成,并且 O服務器比較擴展的所述位串與修改的所述參考密碼(1365)。
這一過程的參數(選擇每個字節的一位)為舉例。本領域技術人員將能夠選擇適 當參數以適合他們的需要和背景。具體而言,典型RSA密碼約為IOO字節。選擇各字節的 一位將產生100位。這在每十進制數位約為3位時將產生用于OTP或者MAC的約30個十 進制數位,這比300個十進制數位更實用,但是仍然可能被認為難以使用。在該情況下可以 選擇每40位中的一位,從而共計20位或者約6個十進制數位。也可以在使用對稱密鑰而 不是不對稱密鑰的情況下,使用用于根據密碼來生成OTP或者MAC (通過選擇密碼的一些但 是并非所有位來變換)的相同過程。典型對稱密碼包括約IOO位。在這一情況下,選擇每 八位之一將帶來約12位或者4個十進制數位。這可能被認為是太小以至于無法免受攻擊 的數目。為了避免這一問題,僅使用每4位之一 (而不是每8位之一)以帶來約25位或者 約8個十進制數位。 在圖13中圖示了一種替代生效過程。圖13的過程在產生客戶機側的密碼(操作 1305)和服務器側的參考密碼(操作1323)方面與圖14的過程相同。如圖13中所示
密碼通過首先是變換A(1306)、然后是變換B(1307)這兩個變換的序列來變換成 OTP或者MAC 生效服務器使參考密碼受到操作1325以產生修改的參考密碼,操作1325與變換
19A的操作相同, 生效服務器也使OTP或者MAC受到操作(1327),該操作是用于產生修改的OTP或 者MAC的變換B的逆變換, 生效取決于修改的OTP或者MAC與修改的參考密碼的比較(1328)。 如針對圖14的生效過程的情況那樣,無論是用對稱還是不對稱密鑰產生密碼都
可以使用圖13的技術。 與傳統PKI簽名驗證對照,圖3的方法并不要求全簽名可為服務器所用(如結合 圖13或者14示范的那樣)。即使除了私用密鑰之外未使用附加保密代碼或者密鑰(由用 戶提供或者存儲于設備中),該解決方案仍然可以提供很高水平的安全性。
然而,只有生效服務器在它不得不使OTP或者MAC生效時具有卡的私用密鑰的副 本,才可以使用圖3的技術。PKI的全部要點確切地在于為了保障真正的認可,私用密鑰決 不可以被與該密鑰關聯的用戶之外的任何人所用。在許多情況下,通過卡在不可能從卡提 取私用密鑰的情況下生成機載私用和公共密鑰對來保障這一點。在其它情況下,密鑰對在 外部生成,然后注入卡中,但是過程然后將正常保證卡私人化系統中的私用密鑰在注入卡 中之后立即被破壞,并且不允許私用密鑰的副本存在于卡外。換而言之,這一方法在許多情 況下不會是適合的解決方案。,,趣繩條禾中刊乂測呆絲牽月(g 5) 在以下實施例中并不要求生效服務器在生效時訪問私用密鑰的副本。在這一實施 例中,以與傳統強認證令牌相同的方式生成OTP/MAC。這一算法的所有步驟(捕獲輸入、將 輸入格式化、對格式化的輸入進行加密或者散列、將所得密碼或者散列變換成OTP/MAC)由 讀取器505進行。在這一實施例中,本發明與常規實踐不同之處在于讀取器505如何獲得 對稱保密強認證密鑰。為了獲得這一保密對稱認證密鑰,讀取器505依賴于涉及到卡的私 用密鑰520的對卡500的操作。這一方法的一個基本實施例的主要步驟如下
1.如果需要(即卡通過PIN保護私用密鑰的使用),則讀取器要求用戶輸入PIN 并且將該PIN提交到卡。 2.假設卡500接受PIN,未連接的卡讀取器將固定值提交到卡以由私用密鑰簽名。 這一固定值也稱為'讀取器到卡的挑戰'。 3.卡用它的私用密鑰對給定挑戰簽名并且將所得密碼返回到讀取器。這一所得密 碼也稱為'卡到讀取器的簽名響應'。 4.讀取器使用所得密碼作為種子以導出對稱保密密鑰。這一密鑰也稱為'導出的 強認證保密密鑰'。 讀取器用導出的強認證保密密鑰將強認證算法(完全由讀取器進行)動態地私人 化。換而言之,讀取器使用導出的強認證保密密鑰來執行強認證令牌算法。
圖5圖示了一個適當實施例,該實施例示出了讀取器505與卡500的交互。該處 理可以要求用戶輸入PIN 510以便將卡500解鎖。這一步驟是可選的,但是如果進行該步 驟,則用戶在510輸入的PIN被送達511到待測試的卡500。卡接受或者拒絕PIN。測試卡 500的響應(512),并且只有接受處理才繼續。隨后函數513捕獲來自讀取器、用戶或者卡中 的一些或者全部的輸入值。函數514可以將一些或者所有輸入值格式化。這些值中的一些 或者所有值或者其它值可以形成向卡500發送(函數515)的讀取器到卡的挑戰515a。卡500通過用卡的私用密鑰520進行密碼運算來使用挑戰515a。卡到讀取器的簽名響應516a 這一所得密碼被回送到讀取器(函數516)。響應516a然后用作種子以經由函數517創建 保密值或者密鑰517a。密鑰517a稱為導出的保密強認證密鑰。密鑰517a然后在函數518 處與函數514提供的格式化的值一起使用于密碼運算中。最后在函數519處變換所得的密 碼以產生0TP或者MAC。'讀取器到卡的挑戰'515a可以是任何以下值
1.對于某個批次的所有讀取器而言相同的固定值。 2.對于給定讀取器而言固定、但是對于各讀取器而言具有不同值的固定值。 3.對于給定用戶而言恒定、但是對于不同用戶而言可以不同并且用戶在讀取器中
輸入至少一次的固定值。在實踐中很有可能的是,每當使用卡時將輸入這一值,或者僅在首
次與某一讀取器一起使用時將輸入這一值,并且讀取器然后將記住這一值。 4.存儲于卡上可以由讀取器讀取的靜態數據(例如公共密鑰和證書或者卡序列
號) 5.任何上述值的組合。 6.根據任何上述值導出的值。該導出可選地包括使用某一讀取器秘密。 用于根據'卡到讀取器的簽名響應'來導出強認證保密密鑰的算法可以利用以下
技術(以及其它技術) 1.提取一些數據元的位 2.并置一些數據源的一些部分 3.對稱加密/解密算法(例如DES、 AES、 ) 4.散列算法(例如SHA-1) 用于根據'卡到讀取器的簽名響應'516a來導出強認證保密密鑰517a的算法除了 '卡到讀取器的簽名響應'516a之外還可以利用以下額外數據元
1.對于某個批次的所有讀取器而言相同的固定值。 2.對于給定讀取器而言固定、但是對于各讀取器而言具有不同值的固定值。
3.對于給定用戶而言恒定、但是對于不同用戶而言可以不同并且用戶在讀取器中 輸入至少一次的固定值。 4.存儲于卡上可以由讀取器讀取的靜態數據(例如與私用密鑰關聯的數據,比如 公共密鑰和證書或者卡序列號)。
5.任何上述值的組合。 這一描述僅提及對智能卡的單個私用密鑰的使用和與該密鑰關聯的單個操作;如 果卡包含多個一個的私用密鑰,則讀取器可以將'讀取器到卡的挑戰'515a提交到這些卡私 用密鑰中的各私用密鑰,并且在導出'導出的強認證保密密鑰'517a時組合所得的'卡到讀 取器的簽名響應'516a。 類似地,讀取器也可以將不同的'讀取器到卡的挑戰'值515a提交到卡,并且在導 出'導出的強認證保密密鑰'517a時組合所得的'卡到讀取器的簽名響應'516a。
在又一實施例中,讀取器并不依賴于單個'讀取器到卡的挑戰'515a以及對應的 '卡到讀取器的簽名響應'516a和'導出的強認證保密密鑰'517a,而代之以使用一組'讀取 器到卡的挑戰'515a以及對應的'卡到讀取器的簽名響應'516a和'導出的強認證保密密鑰'517a。為了獲得'導出的強認證保密密鑰'577a,讀取器選擇這些'讀取器到卡的515a 挑戰'之一并且將它提交到卡。選擇哪個'讀取器到卡的挑戰'515a確定了對應的'卡到 讀取器的簽名響應'516a和'導出的強認證保密密鑰'517a。這一選擇因此必須以對于生 效服務器而言可預測的方式發生。讀取器可以例如按固定順序遍歷這組'讀取器到卡的挑 戰'515a,或者可以取決于對強認證令牌算法的一個或者多個輸入的值來選擇'讀取器到卡 的挑戰'515a。后一種方法的簡單例子是強認證令牌算法在挑戰_響應模式中工作,并且挑 戰的一個特定數位(例如末位)表明待使用的'讀取器到卡的挑戰'的索引。
由于私用密鑰對于各卡而言不同,所以導出的保密密鑰對于給定挑戰而言將為給 定卡所特有。換而言之,在讀取器中的強認證算法中使用的保密密鑰是卡(或者更精確地 為該卡中的私用密鑰520)的函數。這意味著原則上需要訪問正確的卡以能夠生成正確的 OTP。 在大多數情況下,私用密鑰受PIN保護,從而除了訪問正確的卡之外也需要知道 卡的PIN以能夠生成正確的0TP。 如果讀取器向卡提交的用于由私用密鑰簽名的固定值對于不同讀取器而言可以 不同,則除了其它要素(例如訪問正確的卡和知道卡的PIN)之外也需要正確的讀取器。注 意對于不同讀取器而言不同的值的這樣的使用將讀取器有效地'綁定'到卡。
為了生效服務器能夠使以這一方式生成的強認證OTP和/或MAC生效,它必須知 道導出的強認證保密密鑰517a的值。服務器因此必須知道卡的簽名響應516a。用于給定 的卡挑戰的卡簽名響應由卡的私用密鑰520確定,并且在沒有訪問私用密鑰520的情況下 不能加以計算。這樣做的一個后果是,服務器必須訪問卡的私用密鑰520(直接或者間接) 至少一次。 如果在卡上內部生成密鑰對,則這意味著服務器需要訪問卡至少一次,從而服務 器可以向卡提交將適用于這一用戶的一個或者多個卡挑戰,并且取回和存儲對該一個或者 多個挑戰的一個或者多個卡響應(間接訪問私用密鑰)。如果密鑰對在外部生成、然后注入 卡中,則服務器可以直接使用私用密鑰,以在卡外的私用密鑰被破壞之前對一個或者多個 挑戰加密。 服務器這時才能夠根據加密的卡挑戰來計算對應導出的強認證密鑰。這一點的缺 點在于,在實踐中,用戶將不得不在一種注冊階段期間向服務器授予對他/她的卡的訪問 權,或者(在外部密鑰生成的情況下)必須允許服務器在該私用密鑰值被破壞之前用私用 密鑰值對挑戰加密。 另一后果是,在實踐中對于某一用戶而言,導出的強認證保密密鑰必須保持不變。 由于根據對某一卡挑戰的卡的簽名響應而對導出的強認證保密密鑰進行導出,所以該卡挑 戰和對應的'卡到讀取器的簽名響應'對于給定用戶而言必須保持固定。這一點的缺點在 于,如果攻擊者獲得某個用戶的'卡到讀取器的簽名響應'的值,則該攻擊者可能潛在地偽 造如下卡,這些卡在插入讀取器中時總是返回該記錄的"卡到讀取器的簽名響應"。
在生成'讀取器到卡的挑戰'和/或根據'卡到讀取器的簽名響應'來導出'導出 的強認證保密密鑰'時包括讀取器特有或者用戶特有的數據元,可以使攻擊者更難以獲得 正確的'卡到讀取器的簽名響應'或者將該值與讀取器一起用來以欺詐方式生成正確的OTP 或者MAC。
22
使攻擊者更難以獲得正確的'卡到讀取器的簽名響應'的另一方式如上文說明的 那樣,并不依賴于單個'讀取器到卡的挑戰'以及對應的'卡到讀取器的簽名響應'和'導出 的強認證保密密鑰',而代之以使用一組'讀取器到卡的挑戰'以及對應的'卡到讀取器的簽 名響應'和'導出的強認證保密密鑰'。 在以下實施例中,完全不要求服務器訪問卡至少一次以進行私用密鑰操作。
在這一實施例中,對稱保密認證密鑰的值并不(直接或者間接)取決于卡的私用 密鑰的值。并未借助涉及到卡的私用密鑰的不對稱密碼運算根據由卡生成的種子來導出對 稱保密認證密鑰。代之以用對稱保密認證密鑰或者用讀取器可以從中動態地導出對稱保密 認證密鑰的保密數據將讀取器私人化。利用這一對稱保密認證密鑰,讀取器可以生成恰如 傳統強認證令牌一樣的OTP或者MAC。對讀取器的使用受保護,并且通過將用戶的卡邏輯地 綁定到讀取器來為合法用戶而保留。 一旦用戶的卡已經綁定到讀取器,那么只有用戶插入 綁定到讀取器的卡,讀取器才會生成OTP或者MAC。卡因此起到訪問密鑰的作用以將私人化 的讀取器解鎖。 在首次使用時,讀取器將請求插入用戶的卡。在插入卡時,讀取器以如下方式將本 身邏輯地綁定到插入的卡。讀取器確定和記住該卡的一些特有個別特性。這些特性可以包 括 O卡序列號 O卡的公共密鑰和/或證書 O對給定挑戰的卡的響應(其中將響應定義為卡的私用密鑰對挑戰的加密;注 意這將通常要求用戶提交PIN以將私用密鑰解鎖)。這一挑戰和對應的卡的響應必須由 讀取器記住。挑戰可以是 B固定總挑戰(對于所有卡和所有讀取器而言相同)
B每讀取器的固定挑戰 B每卡的固定挑戰(例如在首次呈現卡時由讀取器隨機生成、然后由讀取器記 住) B用戶提供的挑戰
B任何上述挑戰的組合 在圖6中圖示了這一操作的例子。讀取器600等待接收卡數據(函數616)。卡將 一些卡數據611提供給讀取器(函數610)。當讀取器接收到卡數據611時存儲數據(函數 617)。 如果用戶想要生成動態口令或者簽名(見圖7),則讀取器詢問綁定到該讀取器的 卡。讀取器檢驗呈現的卡是否確實為期望的卡。即它將取回呈現的卡的特性(函數710), 并且比較它們與綁定到讀取器的卡的存儲特性(函數711)。這一步驟可以包括
B讀取卡的序列號
B讀取卡的公共密鑰和/或證書 B將(存儲的)挑戰提交到卡,以便由卡的私用密鑰加密(可以要求用戶提供PIN 以將私用密鑰解鎖),并且接收卡的響應。 在呈現的卡成功生效時,讀取器繼續執行如普通強認證令牌那樣的強認證算法。
為了加強安全性,許多變化是可能的。讀取器可以根據以下各項來導出對稱保密認證密鑰 O在讀取器中預先私人化的數據元
〇和/或用戶向讀取器提供的數據元
〇和/或讀取器從卡讀取的數據元 優選地,這些數據元是保密的。代替總是使用在卡綁定到讀取器時使用和獲得的 相同挑戰和對應的卡響應,讀取器可以使用多對挑戰和對應的響應。按照這一原理的變化 包括 O當卡綁定到讀取器時,讀取器生成和提交多于一個的挑戰到卡并且記住對應的 卡響應。當讀取器以后需要使卡生效時,它可以將這些挑戰的任何子集提交到卡,并且檢驗 卡的響應是否與存儲的響應匹配。 O當讀取器已經使插入的卡成功生效時,它可以生成新挑戰并且從卡獲得對應的
響應。這一新挑戰_響應對然后可以由讀取器記住,作為先前已知的一個或者多個挑戰_響
應對的替代或者附加對。 O可以組合這兩種變化。 又一實施例(圖8和圖9)的原理如下。代表服務器,基于對用戶的PKI卡的認證, 讀取器借助傳統證書在本地認證用戶。 如果用戶由讀取器成功認證,則讀取器生成可以由生效服務器生效的OTP或者 MAC(使用傳統強認證令牌算法)。用戶然后可以將這一 OTP或者MAC提交到服務器作為他 已經由讀取器成功認證的證據。 讀取器借助用戶的插入的PKI卡并且使用傳統PKI技術來本地認證用戶。在一個
典型實施例中這可以完成如下(參照圖8): 1.讀取器800使卡的證書(或者證書鏈)806生效。 a.注意這假設讀取器具有對(根)證書當局的受信任公共密鑰的訪問權。這可 以通過在讀取器中存儲(根)證書當局的受信任公共密鑰來完成。 b.注意讀取器800無需每當在讀取器中插入卡時都完成從(根)CA公共密鑰開 始對整個證書(鏈)的顯式驗證。代替地,讀取器800可以在卡805首次插入讀取器中時 完成整個驗證。讀取器然后可以存儲驗證的證書和證書的公共密鑰或者根據驗證的證書或 者公共密鑰導出的參考值(例如證書或者公共密鑰的散列)。如果然后在以后時間插入卡 805,則讀取器800不再需要完成與證書生效關聯的所有計算,而是可以僅比較卡上的證書 與存儲于讀取器中的證書或者參考值。 2.讀取器800進行卡的私用密鑰的挑戰_響應認證 a.讀取器(810)生成挑戰811,例如通常為隨機數或者某一其它非可預測的值,其 例如使用讀取器中存儲的某一秘密借助密碼算法根據時間值或者計數器值而導出。
b.用戶提供保護卡的私用密鑰的PIN。
c.讀取器800將PIN提交到卡。 d.讀取器800將隨機挑戰811提交到卡以由卡的私用密鑰加密。 e.卡用它的私用密鑰對讀取器簽名(815)并且返回響應(=加密的挑戰816)。 f.讀取器800用卡的公共密鑰(來自證書)對卡的響應進行解密。 g.讀取器比較820解密的卡響應與原來生成的挑戰。如果解密的卡響應與原來生成的挑戰相同,則卡的私用密鑰被認證,并且因此用戶被認證。 本質上,讀取器以與傳統強認證算法相同的方式生成(825)0TP/MAC。這一算法的所有步驟(捕獲輸入、將輸入格式化、對格式化的輸入進行加密或者散列、將所得密碼或者散列變換成OTP/MAC)以與傳統強認證令牌本質上相同的方式由讀取器800完成。在一個實施例中,用對稱保密強認證密鑰將讀取器私人化。在該情況下,讀取器800也通常被配置成期望特定的卡。讀取器借助卡的數據元的某一特性值來識別該卡。通常,卡的證書用作這樣的數據元。在其它實施例(見圖9)中,為了避免不得不對讀取器進行私人化和配置,讀取器800根據以下數據元來為對稱保密強認證密鑰導出(835)卡特有的值
O優選地與卡的證書或者公共密鑰有關的公共卡數據(例如卡序列號、證書序列號、公共密鑰等) 〇存儲于讀取器中并且為服務器所知的主密鑰846。這一主密鑰可以是
B用于所有讀取器的相同值 B用于各個別讀取器的特定/唯一值。這要求讀取器向用戶的某種分配和這一分配在服務器的注冊。 〇(可選)額外導出數據元可以是用戶向讀取器提供的(保密)數據元。用戶必須顯式地提供這一數據元 B每當以這一方式使用讀取器和卡時,或者 B僅當這一卡首次與這一讀取器一起使用時(此后讀取器將記住提供的用于這一卡的數據元的值) 讀取器800在對稱強認證算法(比如數字通算法或者0ATH)中使用導出的卡特有的對稱認證密鑰836,以生成(845)動態口令(基于挑戰_響應和/或時間和/或事件),或者生成(845)對一些交易數據(可選地包括時間和/或事件計數器信息)的MAC型電子簽名。 服務器使生成的動態口令或者簽名生效如下 ■服務器導出與讀取器相同的卡特有的對稱強認證密鑰。這假設服務器具有將用
戶鏈接到以下數據的數據庫(或者取回所需信息的替代方式) O公共卡數據, O用戶提供的數據元(如果適用) O以及讀取器的主密鑰 注意代替每當必須完成生效時完成這一導出,也可以一次完成導出,并且所得的導出密鑰可以存儲于數據庫中以供將來使用。 B服務器以與它針對傳統強認證令牌而完成的方式相同的方式使動態口令或者
簽名生效。
—個典型的實施例操作如下(圖10-11): 在招募階段中,銀行客戶1001前往銀行支行1003。客戶將他的全國電子身份卡(e-id卡1002)與銀行支行終端(BBT) —起用來對電子銀行合同1004進行電子簽名。
在客戶的e-id卡插入BBT中時(1010) , BBT :
O捕獲客戶的證書(1011),
O生成隨機種子挑戰(1012),
O將隨機種子挑戰提交到e-id卡(1002)以由卡的私用密鑰加密(1013),
O捕獲該挑戰上的卡密碼(1014)。 最后,BBT將客戶的證書、生成的種子挑戰和種子挑戰上的卡密碼發送到服務器
(1015)。服務器將這一數據存儲于鏈接到客戶的數據庫中。銀行然后將未連接的智能卡讀
取器交付給客戶。這一讀取器包含保密主密鑰。銀行也向客戶發送PIN郵包,該PIN郵包
具有BBT生成和使用的種子挑戰的值。也向認證服務器通知保密主密鑰的值。 當客戶首次使用讀取器時 O讀取器要求插入客戶的e-id卡。 O讀取器也詢問PIN郵包的種子挑戰并且將它存儲于存儲器中。
O讀取器讀取卡的證書并且將它也存儲于存儲器中。 O讀取器生成隨機讀取器挑戰,并且將它提交到卡,以由卡的私用密鑰加密。讀取器存儲讀取器挑戰和由卡生成的對應密碼。 如果客戶想要生成OTP (或者MAC或者響應或者...),則讀取器經過以下步驟
O讀取器要求插入客戶的e-id卡。
O讀取器使卡生效 B讀取器讀取卡的證書并且比較它與存儲的證書。 B如果檢查成功,則讀取器將存儲的讀取器挑戰提交到卡進行簽名,并且比較卡
的密碼與存儲的密碼。
O如果讀取器已經使卡成功生效,則讀取器生成保密認證密鑰 B讀取器將存儲的PIN郵包種子挑戰提交到卡以便由卡加密。
B讀取器現在根據以下各項來導出保密認證密鑰 B讀取器中的保密主密鑰, BPIN郵包種子挑戰, B該PIN的郵包種子挑戰上的卡密碼, B卡的證書。 O讀取器現在在強認證算法中使用生成的保密認證密鑰(以例如生成OTP或者MAC)。 認證服務器能夠驗證所得的0TP(或者MAC),因為它具有對生成保密認證密鑰所
必需的所有數據的訪問權 O讀取器的保密主密鑰, O卡的證書, OPIN郵包挑戰, 〇PIN郵包挑戰上的卡密碼。 使用生成的保密認證密鑰,認證服務器可以用與它使傳統強認證令牌生成的OTP或者MAC生效的方式相同的方式使OTP或者MAC生效。 代替地,認證服務器可以將圖13或者14中所示任一過程用于生效操作。
結合圖13的過程,假設使用變換A(1306)和變換B(1307)這一序列來變換由讀取器產生的密碼。出于生效目的,服務器使0TP或者MAC經歷反變換B(1327)以產生修改的0TP或者MAC,然后使參考密碼經歷變換A(1325)以產生修改的參考密碼。最后,服務器執
26行修改的參考密碼與修改的OTP或者MAC的比較。 結合圖14的過程,假設如圖14中所示使用位選擇(1355)、并置(1356)和位串變換(1357)這一序列來變換由讀取器產生的密碼以產生OTP或者MAC。出于生效目的,服務器使OTP或者MAC經歷圖14的位流和擴展處理1359和1360以產生修改的OTP或者MAC。服務器使參考密碼經歷操作1364以產生修改的參考密碼。最后,服務器執行修改的參考密碼與修改的OTP或者MAC的比較(1365)以實現生效。 前文已經描述包括方法或者設備的若干方面或者實施例。在另一方面中,本發明包括在計算機可讀介質上記錄的指令序列,這些指令在由處理器執行時實現如已經描述的那樣的方法。也可以通過數字網絡如因特網來實現軟件交付。因而在又一方面中本發明涵蓋包括指令序列的信息承載信號,這些指令在由處理器執行時實現如已經描述的那樣的方法。 盡管已經用一些細節描述了本發明的若干實施例,但是應當理解這一描述為舉例而不是限制;本發明的范圍將由所附權利要求確定。
2權利要求
一種用于生成包括一次性口令(OTP)或者消息認證代碼簽名(MAC)的安全值的方法,包括獲得使用一個或者多個可變輸入和運用至少一個秘密的密碼算法來創建的中間動態值;將所述動態值變換成所述安全值,其中執行利用私用密鑰的不對稱密碼運算以產生密碼,以便變換所述動態值,并且所述變換包括產生大小比所述不對稱密碼運算生成的密碼的大小更小的所述安全值。
2. 根據權利要求1所述的方法,其中所述一個或者多個可變輸入包括以下值中的一個或者多個值時間值;計數器值;挑戰值;交易數據;或者前述值的任何組合。
3. 根據權利要求2所述的方法,其中創建所述中間動態值包括使用以下數據中的一個或者多個數據對生成所述安全值的設備進行標識的數據;或者存儲于生成所述安全值的所述設備中的一個或者多個秘密;或者對生成所述安全值的設備的用戶進行標識的數據;或者與所述私用密鑰關聯的數據;或者由生成所述安全值的設備的用戶提供的秘密。
4. 根據權利要求2所述的方法,其中將所述動態值變換成所述安全值包括以下操作中的一個或者多個操作散列;用對稱密碼算法來加密或者解密;截取;選擇某些位、半字節或者字節;或者十進制換算。
5. 根據權利要求2所述的方法,還包括使用第一設備來捕獲所述一個或者多個可變輸入的值并且呈現所述安全值,使用第二設備來存儲所述私用密鑰并且執行所述不對稱密碼運算,其中所述第二設備從所述第一設備接收信息并且將信息發送到所述第一設備,并且所述第一設備將信息發送到所述第二設備并且從所述第二設備接收信息。
6. 根據權利要求3所述的方法,還包括使用第一設備來捕獲所述一個或者多個可變輸入的值并且呈現所述安全值,使用第二設備來存儲所述私用密鑰并且執行所述不對稱密碼運算,其中所述第二設備從所述第一設備接收信息并且將信息發送到所述第一設備,并且所述第一設備將信息發送到所述第二設備并且從所述第二設備接收信息。
7. 根據權利要求5所述的方法,其中所述第一設備是具有鍵盤和顯示器的由電池供電的智能卡讀取器。
8. 根據權利要求6所述的方法,其中所述第一設備是具有鍵盤和顯示器的由電池供電的智能卡讀取器。
9. 根據權利要求5所述的方法,其中 所述第二設備是智能卡。
10. 根據權利要求5所述的方法,其中所述第二設備是USB棒。
11. 根據權利要求5所述的方法,其中所述第一設備是PC或者PDA或者移動電話。
12. 根據權利要求2所述的方法,其中所述安全值取決于所述私用密鑰的值。
13. 根據權利要求12所述的方法,其中所述安全值是所述不對稱密碼運算使用所述私用密鑰生成的所述密碼的值的函數。
14. 根據權利要求13所述的方法,其中根據所述一個或者多個可變輸入中的至少一個可變輸入計算的值用作向所述不對稱 密碼運算的輸入,并且所述中間動態值是所述不對稱密碼運算產生的所得密碼的函數。
15. 根據權利要求13所述的方法,其中計算所述安全值包括使用對稱密碼算法,其中根據所述不對稱密碼運算使用所述私用密鑰生成的所述密碼來導出所述對稱密碼算 法中所用的密鑰。
16. 根據權利要求5所述的方法,其中所述第一設備將第一設備挑戰提交到所述第二設備; 所述第二設備使用所述私用密鑰對所述第一設備挑戰執行不對稱密碼運算,并且將所得密碼返回到所述第一設備;所述第一設備驗證所述所得密碼;并且所述第一設備在所述所得密碼的所述驗證成功的條件下生成所述安全值。
17. 根據權利要求16所述的方法,其中通過使用所述一個或者多個可變輸入和對稱密碼運算的計算來獲得所述中間動態值。
18. 根據權利要求17所述的方法,其中根據所述一個或者多個可變輸入來導出用于所述對稱密碼運算的數據;并且 根據所述對稱密碼運算的輸出來導出所述中間動態值。
19. 根據權利要求17所述的方法,其中所述對稱密碼運算使用根據以下數據中的一個或者多個數據導出的對稱秘密 標識所述第一設備的數據;存儲于所述第一設備中的一個或者多個秘密; 與所述私用密鑰關聯的數據; 存儲于所述第二設備上的數據; 標識所述第一設備的用戶的數據;或者所述第一設備的用戶提供的秘密。
20. 根據權利要求16所述的方法,其中將第一設備挑戰至少兩次提交到所述第二設 備,從而產生所述初始呈現的初始密碼和第二次呈現的以后密碼;并且所述方法還包括根據所述初始密碼導出參考值; 在所述第一設備中存儲所述參考值;并且通過比較所述以后密碼與存儲的所述參考值來驗證所述以后密碼。
21. 根據權利要求16所述的方法,還包括維持將至少一個第一設備挑戰與至少一個對應驗證值一起存儲于所述第一設備中;并且其中所述所得密碼的所述驗證包括比較所述所得密碼與所述對應驗證值。
22. 根據權利要求16所述的方法,還包括在所述第一設備與所述第二設備一起初次使用期間執行包括以下操作的序列 生成所述至少一個挑戰;將所述至少一個挑戰提交到所述第二設備以便所述第二設備使用所述私用密鑰執行 不對稱密碼運算;從所述第二設備接收至少一個所得密碼; 根據所述至少一個所得密碼導出驗證值;并且 將所述至少一個挑戰與所述至少一個驗證值一起存儲。
23. 根據權利要求22所述的方法,其中所述第一設備有時執行包括以下操作的序列 生成新設備挑戰;將所述新設備挑戰提交到所述第二設備,以便所述第二設備使用所述私用密鑰執行不 對稱密碼運算;從所述第二設備接收對應新密碼; 根據所述對應新密碼導出新驗證值;并且 在存儲器中將所述新設備挑戰與所述新驗證值一起存儲。
24. 根據權利要求23所述的方法,其中所述新設備挑戰和所述新驗證值替換更早的設備挑戰和驗證值。
25. 根據權利要求24所述的方法,其中每當所述驗證成功時執行所述序列。
26. 根據權利要求17所述的方法,其中所述第一設備對所述所得密碼進行的所述驗證要求使用與所述第二設備的所述私用 密鑰對應的公共密鑰。
27. 根據權利要求26所述的方法,其中 所述第一設備驗證與所述公共密鑰對應的證書或者證書鏈。
28. 根據權利要求27所述的方法,其中 所述第一設備在存儲器中維護證書當局的公共密鑰;并且所述第一設備對所述證書或者證書鏈進行的所述驗證要求使用所述證書當局的所述 公共密鑰。
29. —種使用根據權利要求2所述的方法來生成包括一次性口令(OTP)或者消息認證 代碼簽名(MAC)的安全值的裝置。
30. 根據權利要求29所述的裝置,包括讀取器,所述讀取器用于 基于所述一個或者多個可變輸入來生成用于所述不對稱密碼運算的輸入, 將所述輸入傳達到所述不對稱密碼運算,并且 接收所述不對稱密碼運算的所得不對稱密碼,并且 根據所述所得密碼導出所述中間動態值。
31. 根據權利要求29所述的裝置,包括讀取器,所述讀取器用于 將輸入傳達到所述不對稱密碼運算,并且 接收所述不對稱密碼運算的所得不對稱密碼,并且 根據所述所得不對稱密碼導出對稱密鑰,并且 使用所述對稱密鑰與對稱密碼算法來計算所述安全值。
32. 根據權利要求29所述的裝置,包括讀取器,用于將讀取器挑戰傳達到所述不對稱密碼運算,并且接收所述不對稱密碼運算的所得不對稱密碼;并且所述裝置還包括 存儲器,用于存儲參考值;并且所述裝置還包括 處理單元,用于通過比較所述所得不對稱密碼與存儲的所述參考值來驗證所述所得不對稱密碼,并且 在所述所得不對稱密碼的所述驗證成功的條件下生成所述安全值。
33. 根據權利要求29所述的裝置,包括 讀取器,用于將讀取器挑戰傳達到所述不對稱密碼運算,并且接收所述不對稱密碼運算的所得不對稱密碼;并且所述裝置還包括 處理單元,用于通過使用與所述私用密鑰對應的公共密鑰,并且通過驗證與所述公共密鑰對應的證書 或者證書鏈,來驗證所述所得不對稱密碼;在所述所得不對稱密碼的所述驗證成功的條件 下生成所述安全值。
34. 根據權利要求33所述的裝置,還包括存儲器,用于存儲證書當局的用來驗證與所述公共密鑰對應的所述證書或者證書鏈的公共密鑰。
35. 根據權利要求29、31和32中的任一權利要求所述的裝置,還包括電池電源、鍵盤和顯示器。
36. 根據權利要求35所述的裝置,還包括執行所述不對稱密碼運算的智能卡。
37. —種使用戶提供的安全值生效以便認證所述用戶或者與所述用戶關聯的數據的方 法,所述安全值包括一次性口令或者包括消息認證代碼的簽名;所述方法包括使用參考密碼算法來創建參考密碼,所述參考密碼算法使用服務器密鑰來應用于一個 或者多個參考輸入,所述服務器密鑰是可信用戶的PKI私用密鑰的值的函數,所述參考密 碼算法和所述一個或者多個參考輸入被選擇為與所述可信用戶在創建所述安全值時使用 的對應要素相同;在這之后,通過將所述參考密碼變換成參考安全值,單獨對所述參考密碼進行操作,包括產生大小比所述參考密碼的大小更小的所述參考安全值,并且實現所述參考安全值與所述安全值 的比較,或者對所述參考密碼和所述安全值兩者進行操作,以產生修改的參考密碼和修改的安全 值,并且實現修改的所述參考密碼與修改的所述安全值的比較,并且 根據所述比較的結果確定所述安全值的有效性。
38. 根據權利要求37所述的方法,其中為了產生修改的所述參考密碼而對所述參考密碼進行的所述操作與為了創建所述安 全值而執行的操作部分地相同。
39. 根據權利要求37所述的方法,其中所述參考密碼算法是不對稱算法,并且所述服 務器密鑰具有與所述可信用戶的所述PKI私用密鑰相同的值。
40. 根據權利要求37所述的方法,其中所述參考密碼算法是對稱算法,并且根據使用 所述可信用戶的PKI私用密鑰生成的密碼來導出所述服務器密鑰。
41. 一種使用戶提供的安全值生效以便認證所述用戶或者與所述用戶關聯的數據的方 法,所述安全值包括一次性口令或者包括消息認證代碼的簽名并且使用根據權利要求1所 述的方法來生成,所述方法包括使用參考密碼算法來創建參考密碼,所述參考密碼算法使用服務器密鑰來應用于一個 或者多個參考輸入,所述服務器密鑰和所述參考密碼算法和所述一個或者多個參考輸入被 選擇為與所述可信用戶在創建所述安全值時使用的對應要素相同;通過將所述參考密碼變換成參考安全值,對所述參考密碼進行操作,包括產生大小比 所述不對稱密碼運算已經生成的所述密碼的大小更小的所述參考安全值;并且對所述安全值進行操作以產生修改的安全值;并且實現所述參考安全值與修改的所述安全值的比較;并且根據所述比較的結果確定所述安全值的有效性。
42. 根據權利要求41所述的方法,其中對所述參考密碼進行的所述操作與為了創建所述安全值而執行的操作部分地相同。
43. —種支持指令序列的計算機可讀介質,所述指令在執行時實現一種生成包括一次 性口令(OTP)或者消息認證代碼簽名(MAC)的安全值的方法,所述方法包括獲得使用一個或者多個可變輸入和運用至少一個秘密的密碼算法來創建的中間動態值;將所述動態值變換成所述安全值,其中執行利用私用密鑰的不對稱密碼運算以產生密碼,以便變換所述動態值,并且 所述變換包括產生大小比所述不對稱密碼運算生成的密碼的大小更小的所述安全值。
44. 根據權利要求43所述的計算機可讀介質,其中所述一個或者多個可變輸入包括以 下值中的一個或者多個值時間值; 計數器值; 挑戰值; 交易數據;或者 前述值的任何組合。
45. 根據權利要求44所述的計算機可讀介質,其中創建所述中間動態值包括使用以下 數據中的一個或者多個數據對生成所述安全值的設備進行標識的數據;或者 存儲于生成所述安全值的設備中的一個或者多個秘密;或者 對生成所述安全值的設備的用戶進行標識的數據;或者 與所述私用密鑰關聯的數據;或者 由生成所述安全值的設備的用戶提供的秘密。
46. 根據權利要求44所述的計算機可讀介質,其中 將所述動態值變換成所述安全值包括以下操作中的一個或者多個操作 散列;用對稱密碼算法來加密或者解密; 截取;選擇某些位、半字節或者字節;或者 十進制換算。
47. —種包括指令序列的信息承載信號,所述指令在處理器中執行時實現一種生成包 括一次性口令(OTP)或者消息認證代碼簽名(MAC)的安全值的方法,所述方法包括獲得使用一個或者多個可變輸入和運用至少一個秘密的密碼算法來創建的中間動態值;將所述動態值變換成所述安全值,其中執行利用私用密鑰的不對稱密碼運算以產生密碼,以便變換所述動態值,并且 所述變換包括產生大小比所述不對稱密碼運算生成的密碼的大小更小的所述安全值。
48. 根據權利要求47所述的信息承載信號,其中所述一個或者多個可變輸入包括以下 值中的一個或者多個值
49. 根據權利要求48所述的信息承載信號,其中創建所述中間動態值包括使用以下數 據中的一個或者多個數據對生成所述安全值的設備進行標識的數據;或者 存儲于生成所述安全值的設備中的一個或者多個秘密;或者 對生成所述安全值的設備的用戶進行標識的數據;或者 與所述私用密鑰關聯的數據;或者 由生成所述安全值的設備的用戶提供的秘密。
50. 根據權利要求48所述的信息承載信號,其中將所述動態值變換成所述安全值包括以下操作中的一個或者多個操作 散列;用對稱密碼算法來加密或者解密;截取;選擇某些位、半字節或者字節;或者 十進制換算。
51. —種認證多個用戶的方法,其中各用戶具有至少一個關聯智能卡,所述智能卡包含 至少一個PKI私用密鑰,并且能夠用所述PKI私用密鑰執行不對稱密碼運算,所述方法包括 以下步驟為與用戶關聯的各智能卡生成服務器側密鑰,并且 從所述用戶接收包括OTP或者MAC的安全值,并且使用所述服務器側密鑰根據權利要求41所述的方法通過使接收的所述安全值生效來 認證所述用戶。
52. 根據權利要求51所述的方法,包括以下步驟對于各用戶,將挑戰提交到與所述用戶關聯的所述智能卡,以便使用所述私用密鑰對 所述智能卡進行不對稱密碼運算;并且從所述智能卡接收所述智能卡上的所得密碼;并且在生成所述服務器側密鑰時,在所述智能卡上通過所述私用密鑰來使用所述所得密碼。
53. 根據權利要求51所述的方法,包括以下步驟 生成一個或者多個保密密鑰導出種子;并且在生成所述服務器側密鑰時,使用所述保密密鑰導出種子中的至少一個保密密鑰導出 種子;并且向所述用戶送達在生成所述服務器側密鑰時使用的所述保密密鑰導出種子中的所述 至少一個保密密鑰導出種子,用于與這些用戶關聯的所述智能卡。
54. 根據權利要求51所述的方法,包括以下步驟 從存儲于所述智能卡上的證書獲得與各所述用戶關聯的數據;并且 在生成所述服務器側密鑰時使用來自所述證書的所述數據。
全文摘要
本發明提供一種允許使用包含PKI私用密鑰的設備(比如具有PKI功能的智能卡或者USB棒)來認證用戶并且對交易進行簽名的方法、裝置、計算機可讀介質和信號。用戶和/或消息的真實性被檢驗。進而,進行操作(認證和/或簽名)而無需應用程序與包含私用密鑰的設備具有某種直接或者間接的數字連接。換而言之,并不要求數字連接,所述數字連接允許應用程序將數據提交到卡以便由卡的私用密鑰簽名,并且允許從卡取回整個所得簽名。此外,進行操作而無需包含私用密鑰的具有PKI功能的設備(例如PKI智能卡或者USB棒)支持對稱密碼運算,或者已經用可以由適當讀取器讀取的某種保密或者機密數據元來私人化。
文檔編號H04L9/00GK101765996SQ200880100663
公開日2010年6月30日 申請日期2008年5月30日 優先權日2007年5月31日
發明者弗蘭克·庫利耶, 弗蘭克·霍爾內特 申請人:威斯科數據安全國際有限公司