專利名稱:使用一次性變量的密鑰數(shù)字認證方法
技術(shù)領(lǐng)域:
本方案屬于信息技術(shù)安全領(lǐng)域,涉及信息安全認證服務身份認證、信息完整性和新鮮性認證。
背景技術(shù):
對身份認證方法通常有身份憑證、章印或手寫簽名等認證,這些認證方法通常都是實物認證,使用人工識別,容易被偽造,難以分辨,并且不方便信息的交換,通常不用來作數(shù)字信息交換和認證。
當前很多應用中還經(jīng)常用到用戶ID和單純口令字認證,容易失密而被假冒身份。
對數(shù)字信息的認證通常使用消息認證碼(MAC,或者稱作消息認證校驗和),是利用密鑰對消息揉合計算生成一個固定長度的短數(shù)據(jù)塊。HMAC表示基于雜湊算法的消息認證碼。通信雙方都可以使用共享密鑰對消息計算生成消息認證碼MAC;發(fā)送方把消息和消息認證碼MAC一起發(fā)送給接收方,接收方通過同樣計算得到MAC,與收到的MAC進行比較,如果相同就可以確定(1)消息完整性,接收方可確定消息沒有被修改過。
(2)肯定發(fā)送方曾生成過此消息,任何沒有密鑰的第三方不可能生成正確的MAC。
(3)如果消息中含有序列號,接收方可以相信消息順序是正確的。
使用數(shù)字簽名也可以確保消息的完整性。
為了防止消息重放攻擊,可以使用時間戳(時戳),或者使用臨時值變量,附在消息中一起發(fā)送,接收方通過驗證時間戳或臨時值變量就可以確保消息的新鮮性,同時也可以相信消息來自真正的發(fā)送方,即確保身份認證。
使用時間戳時,一般要求各主體的時鐘同步,但時間戳并不和某個主體直接關(guān)聯(lián),任何一個主體產(chǎn)生的時間戳都能被其他主體用來檢驗消息的新鮮性。時間戳不具有唯一性,它通常有一個有效的范圍,只要它位于這個有效范圍內(nèi),主體都接受它的新鮮性。
臨時值則是某個主體產(chǎn)生的偽隨機數(shù)值,使用臨時值和消息一起生成消息認證碼進行認證,一個主體只能根據(jù)它自己所產(chǎn)生的臨時值來檢驗消息的新鮮性。
與本方案接近或相關(guān)的技術(shù)消息認證碼(MAC,消息認證校驗和)。
消息認證碼是利用密鑰把任意長度的消息輸入揉合而產(chǎn)生固定長度的短數(shù)據(jù)塊,或者稱作消息認證校驗和。
參考文獻1、《密碼工程實踐指南》作者(美)Steve Burnett & Stephen Paine譯馮登國 周永彬 張振峰 李德全 等譯出版清華大學出版社2、《應用密碼學協(xié)議、算法與C源程序》作者(美)Bruce Schneier譯吳世忠 祝世雄 張文政 等譯出版機械工業(yè)出版社3、《安全協(xié)議》作者卿斯?jié)h 編著,宮力 審出版清華大學出版社
4、《網(wǎng)絡安全--技術(shù)與實踐》作者劉建偉 王育民 編著,寇衛(wèi)東 審出版清華大學出版社發(fā)明內(nèi)容要解決的技術(shù)問題本方案所要解決的技術(shù)問題主要是信息的安全服務,包括安全身份認證、信息的完整性及新鮮性認證。
當前在信息安全領(lǐng)域中通常使用的數(shù)字信息認證方法主要有校驗消息認證碼(MAC或HMAC)或數(shù)字簽名。這兩個方法都能真實確定消息的完整性,但對消息的新鮮性認證和發(fā)送消息者的身份認證,通常都還需要結(jié)合時間戳或臨時值進行校驗,以防止攻擊者進行消息重放攻擊。但時間戳需要認證雙方時間同步,而且不具備唯一性;當然時間戳的作用不但可以確定消息的新鮮性,而且可以確定消息的特定時間性;而臨時值只能由驗證方主體產(chǎn)生才能具備隨機性作用,驗證方主體只能根據(jù)自己所產(chǎn)生的臨時值來檢驗消息的新鮮性。時間戳和臨時值方法都可以確保消息的新鮮性,但需要在認證過程中增加通信過程,或者需要耗費更多的資源,并且難以確保唯一性,使消息驗證不容易實施。
技術(shù)方案本方案是在認證的雙方使用密鑰(通常使用共享密鑰,也可以使用公鑰加密方法)通過計算和檢驗消息認證碼對消息進行認證時,同時使用一次性變量。所謂一次性變量,是指變量對于某一確定的密鑰和確定的認證函數(shù),只用來有效認證信息一次,此后不再使用來對其他消息進行認證。在確定密鑰和認證函數(shù)后,一次性變量在使用前需要保存可使用的變量及其使用狀態(tài)。認證雙方同時共享一次性變量,但共享一次性變量與共享密鑰不同,共享密鑰必須雙方同時秘密保存,共享一次性變量時,一次性變量需要與其使用狀態(tài)一起保存,其狀態(tài)可以使用缺省形式只要保存變量就是可用的。所以一次性變量的保存方式可以是一一保存,也可以只保存可用變量的范圍,可以是無序的變量,也可以是一定范圍內(nèi)的序數(shù);極端的情況是開始時不進行保存,其范圍是所有可能的變量。例如一次性變量范圍是大于100的自然數(shù),缺省時范圍內(nèi)的變量都是可用的,那么就保存數(shù)字101就可以了。變量本身可以不當作秘密處理,也就是說,變量可以是第三者猜測得到的。認證的雙方可以有各自不同使用的一次性變量,這樣,對某一個范圍內(nèi)的變量,一方只用進行生成消息認證碼,另一方只使用來作校驗認證;而另一范圍內(nèi)的變量則剛好相反。認證的雙方也可以共同使用相同的一次性變量范圍,只要一次性變量沒有被重復使用即可。
在進行認證時,認證雙方必需使用一次性變量與需要認證的消息一起使用認證函數(shù)進行計算消息認證碼MAC,消息發(fā)送方在使用一次性變量用作消息認證后,需要將該變量狀態(tài)標記為已使用;接收方接收到消息(包括一次性變量)和消息認證碼MAC后,在檢驗消息認證碼MAC是否正確的同時,也必須檢驗一次性變量及其使用狀態(tài),確定該變量是以前還沒有用過的可用變量,并且在檢驗后必須把該變量的使用狀態(tài)標記為已使用。一次性變量可以作廢,可以按序使用,也可以不按序使用,這可以根據(jù)具體應用的需要確定。根據(jù)BAN邏輯或SVO邏輯的消息新鮮性規(guī)則公理,一次性變量是新鮮的,所以與一次性變量一起發(fā)送的消息也是新鮮的,故只要同時確認消息認證碼MAC和一次性變量及其使用狀態(tài)的正確性,就可以確保消息的完整性和新鮮性;即使信息交換傳送相同的消息,只要使用不同的一次性變量,就可以得到不同的消息認證碼MAC,可以確保消息的新鮮性。
如果認證雙方能同步使用一次性變量,即發(fā)送方和接收方都能確定是最近使用的一次性變量,那么也就可以確保發(fā)送方的身份認證。
對于身份認證,通常需要多次信息交換,以確保一次性變量同步使用。需要同步才能確認身份認證,是因為在通訊過程中可能由于通訊線路等原因存在通訊中斷,使得發(fā)出的詢問或請求消息沒有回應,但卻可能被截取盜用的情況。在一個信息事務中,進行多次信息交換,每次信息交換采用消息詢問、應答方式,對每個消息的認證都使用一個不同的一次性變量,這樣可以確定變量的同步使用;由于一次性變量是相對于相應的密碼和認證函數(shù)的使用,也可以使用多個密碼共同使用同一個一次性變量,每次信息交換使用不同的密碼,這種情況下,一次性變量有多個狀態(tài),相對于不同的密碼有不同的使用狀態(tài)。認證函數(shù)是相對不變的,不管認證函數(shù)可以分為多少個子函數(shù),對于輸入和輸出,認證函數(shù)總體上都可以看作是一個數(shù)據(jù)加工的黑盒子,總體上是相對穩(wěn)定不變的。每次認證,在認證函數(shù)不變的情況下,只要密碼和一次性變量是唯一的組合,不管實際傳送的消息是否相同,其消息認證碼都會不相同,可以確保消息的完整性和新鮮性。經(jīng)多次信息交換,一次性變量同步后,也就可以確保通信終點雙方的身份認證;由于消息認證不具備信息保密功能,所以在消息傳輸過程中攻擊者可以監(jiān)聽消息的內(nèi)容,甚至可以阻隔消息的傳送,但攻擊者不可能修改消息、替換消息、偽造消息或重放消息。如果需要通信過程保密,還必須運用其他加密方法。
假定雙方共享密鑰K,MAC為消息認證碼,M為輸入消息,f為運算函數(shù),V1為一次性變量,V為臨時值,T為時間戳,那么消息認證碼可以表示如下一般的消息認證碼計算方法MAC=f(K,M)使用臨時值的消息認證碼計算方法MAC=f(K,V,M)使用時間戳的消息認證碼計算方法MAC=f(K,T,M)使用一次性變量的消息認證碼計算方法MAC=f(K,V1,M)如果運算函數(shù)f是雜湊算法函數(shù)h,使用一次性變量的消息認證碼計算方法為HMAC=h(K,V1,M)從以上計算方法來看,使用一次性變量與使用時間戳和臨時值十分相似,但這些方法在它們的認證過程其實有很大的差別。
使用一次性變量與時間戳的區(qū)別時間戳必須與時間變量相關(guān),所以認證的雙方必須有相應的時鐘系統(tǒng),并進行時鐘同步,如果需要認證特定的時間,通常還需要可信的第三方時鐘認證。接收方收到帶時間戳的消息后,必須使用時間戳與時鐘比較,在差別范圍內(nèi)認可,其比較沒有唯一性,而且要求認證的實時性較強。一次性變量不使用時鐘系統(tǒng),但要求在使用前(嚴格來說是更新相對應密碼時)保存好變量及其狀態(tài),使用時每次認證消息須進行變量唯一性比較,還要確認變量的狀態(tài),使用后必須改變和標記變量的狀態(tài)(為不再可復用)。對身份認證,一次性變量也必須進行同步使用,這可以通過使用多個變量,或者多個密碼共享使用變量實現(xiàn)。
使用一次性變量與臨時值的區(qū)別臨時值是認證方產(chǎn)生的隨機數(shù),使用臨時值和消息一起生成消息認證碼進行認證,認證方只能根據(jù)自己產(chǎn)生的臨時值來認證對方消息的新鮮性,所以認證的雙方如果要相互認證,就必須各自產(chǎn)生認證對方的隨機數(shù)。認證方先產(chǎn)生隨機數(shù),更有利于被實施主動性攻擊,特別是中間人攻擊攻擊者只要發(fā)送帶隨機數(shù)的消息,就可以得到對方返回的認證數(shù)據(jù);而且由于沒有進行使用保存,隨機數(shù)可能被惡意重復使用,存在被重放攻擊的可能。一次性變量在認證的雙方進行保存,是預知的變量,發(fā)起認證的一方必須使用一次性變量和消息同時生成消息認證碼,不知道密碼的任何第三者不可能生成正確的消息認證碼,也就難以發(fā)起主動攻擊;如進行重放攻擊,已使用過的一次性變量又不可能得到有效的認證,所以從發(fā)起認證方面可以有效防止主動性攻擊和消息重放攻擊。
使用一次性變量與通信中使用的消息序號的區(qū)別當前在很多的通信中都使用消息分組通信,對每一個分組都使用消息認證碼對分組消息進行認證,并且認證時與消息的分組序號一起進行認證,在通信的雙方也必須保存已經(jīng)收到的消息分組序號,以確保消息按序傳送。但消息分組序號與一次性變量有很大的不同分組序號是基于整個通信過程,對每一個通信過程可以有一套序號序列,序號在通信過程中只能按序使用,即使在通信過程中密碼產(chǎn)生了改變,序號仍只能按通信過程有序地進行使用,不可改變,也不可作廢;而對于不同的通信過程,即使密碼沒有改變,但序號使用仍然可能重新開始,如果密碼、消息和認證函數(shù)都沒有改變,兩次通信過程有可能相同,這樣就不能確保消息的新鮮性;也就是說,序號不是為了確保消息的新鮮性而產(chǎn)生,而是為了確保通信過程中的消息分組正確順序而產(chǎn)生,盡管在有些通信中,由于每次通信密碼的改變,序號確實也同時起到了新鮮性的作用;消息序號在消息分組通信雙方必須使用不同的序號序列,有些通信雙方使用不相同密鑰,有些使用相同密鑰,當密鑰相同共用時,不同序列的序號有可能交叉相同,則相對于密鑰來說就是復用了;總之,通信中消息序號只能按通信過程的次序來使用,它是基于通信過程的。一次性變量是基于認證使用的密鑰和認證函數(shù)(認證函數(shù)通常固定不變,如有改變,可以看作是子函數(shù)),每當密鑰改變時,一次性變量就可以重新確定(范圍及狀態(tài));一次性變量可以按序使用,也可以不按序使用,即使是按序使用,也可以根據(jù)需要對某些變量作廢,比如發(fā)現(xiàn)有對某個變量的攻擊,在受到三次攻擊后,可以把該變量作廢,以確保安全性;在進行消息認證時,不但要驗證消息認證碼,還必須驗證一次性變量及其使用狀態(tài);你可以使用不同的一次性變量對同一消息進行多次認證;一次性變量也可以有多個使用狀態(tài),當多個密碼同時共用同一個一次性變量時,這時該一次性變量就存在多個使用狀態(tài);認證的雙方可以使用不同的一次性變量序列,也可以使用相同的一次性變量序列,使用相同的變量序列時,也可以不規(guī)定一次性變量該由那一方先使用,只要沒有重復使用就可以了。
使用一次性變量的密鑰認證方法安全性分析。
1、算法攻擊用來生成消息認證碼MAC的算法函數(shù)通常是單向散列函數(shù),計算時對消息運算要有足夠的混亂和擴散,密碼與MAC是單向的多對一關(guān)系,即多個密碼可以生成相同的MAC,不可能從MAC和消息進行逆運算得到具體密碼,即使這樣還應當考慮對函數(shù)各種類型的攻擊。用M表示消息,K表示密鑰,F(xiàn)k表示基于密鑰K的單向散列函數(shù),消息認證碼MAC的算法函數(shù)F應具有下述性質(zhì)(1)給定消息M,很容易計算MAC=Fk(M)。
(2)給定消息M、消息認證碼MAC和算法F,不可能通過計算確定K,因為K與MAC是多對一關(guān)系,函數(shù)是單向的,不存在逆運算。
(3)已知消息M和Fk(M),構(gòu)造Fk(M’)=Fk(M)在計算上是不可行的,那么函數(shù)F是弱碰撞自由的。
(4)對于確定的函數(shù)F和確定的密碼K,能夠找到兩個不同的消息,使得Fk(M’)=Fk(M),在計算上是不可行的,則函數(shù)F是強碰撞自由的。
(5)函數(shù)具有足夠的混亂和擴散,使得密鑰或消息每一位微小的改變,都會在MAC中形成巨大的變化,得到完全不同的結(jié)果。
即使這樣,為確保安全性,最好使用標準安全或公認較為安全的函數(shù)算法,如SHA、MD5算法等等。
2、窮舉法攻擊理論上,由于密鑰長度的有限性,只要收集有足夠的認證數(shù)據(jù),通過窮舉法總可以得到使用的密鑰。
已知函數(shù)F、消息M1和MAC1,假定MAC的長度為n位,密鑰K的長度為k位,函數(shù)F算法等到的MAC具有偽隨機性,也就是密鑰和MAC的分布是均勻的,那么MAC1=Fk(M1)通過窮舉法對所有2k個密鑰進行測試,就可以得到大約2(k-n)個密鑰,使得以上等式成立。用得到的可能密鑰,用同樣方法對M2、MAC2進行測試可得到2(k-2n)個密鑰,同樣測試到i次,當k<=i*n時,在第i次就可以得到唯一的密鑰!抵抗窮舉法攻擊的最好方法就是增大密鑰的長度,測試的次數(shù)會隨密鑰長度的增長呈現(xiàn)出指數(shù)級增長,使得在現(xiàn)實條件下使用窮舉法不可能完成測試。
如果每秒鐘測試的次數(shù)為10億個密鑰(假定攻擊者可能使用大型計算機或者使用分布式計算方法),那么密鑰的長度為128位時,需時大約2128/1010秒≈3*1028秒≈1021年,這在現(xiàn)實中是不可能發(fā)生的。但考慮到摩爾定律,大約5年計算能力就可能增長10倍,所以應該采取比較保守的方法來確定密鑰的長度,比如,如果使用128位密鑰在當前是安全的,那么使用1024位的密鑰(甚至更長),在可見的將來,現(xiàn)實條件是無法破解的。
定期更新密鑰可以使得攻擊者難以收集足夠歷史數(shù)據(jù),也可以使攻擊者只能使用有限的時間,可以在一定程度上防止攻擊。
3、分析法攻擊由于MAC的算法函數(shù)可能存在某些弱點,攻擊者有可能不用知道密鑰,只分析以往的消息認證歷史數(shù)據(jù)就可能構(gòu)造新的消息及消息認證碼。為增強抵抗分析攻擊,可使用密鑰同時放在消息的首尾一起計算消息認證碼,或者對生成的消息認證碼再次結(jié)合密鑰進行計算消息認證碼,也可以根據(jù)消息或變量對密鑰進行變形后使用。由于一次性變量具有新鮮性,這對抵抗分析法攻擊也具有非常大的作用只有使用未用過的一次性變量才能構(gòu)造新的消息。
用H表示單向散列函數(shù),K表示密鑰,F(xiàn)1、F2為密鑰變形函數(shù),K1、K2為變形后的密鑰,M表示消息,V1表示一次性變量,各種要素的位置代表運算時的排列順序,則消息認證碼的構(gòu)造算法可以如下所示K1=F1(K,V1), K2=F2(K,V1)或K1=F1(K,V1,M), K2=F2(K,V1,M)消息認證碼計算構(gòu)造方法如下MAC=H(K,V1,M,K) 或MAC=H(K,V1,M,K1) 或MAC=H(K1,V1,M,K2)或MAC=H(K,H(K,V1,M)) 或MAC=H(K,H(K1,V1,M)) 或MAC=H(K2,H(K1,V1,M))以上構(gòu)造計算消息認證碼方法都有助增強安全性。
4、消息重放攻擊由于消息認證碼使用一次性變量與消息一起計算生成,而一次性變量對于相同的密鑰和認證函數(shù)只用來有效認證消息一次,故攻擊者不可能成功實施重放攻擊。
有益效果通過使用一次性變量進行認證,可以準確、簡單、方便、有效地實現(xiàn)認證消息的完整性和新鮮性,而且可以在多方面有效地防止安全性攻擊;通過一次性變量的同步使用,可以有效實現(xiàn)身份認證;可以簡化認證過程和認證協(xié)議,增強認證和協(xié)議的安全性,使得很多原來復雜的認證應用得以簡單實現(xiàn)。
具體實施例方式
銀行交易安全認證方案在這方案中,我們定義銀行方是服務方,是可信賴的一方。與銀行業(yè)務往來的企業(yè)或個人作為客戶方??蛻粼阢y行開立相應帳戶,銀行通過認證客戶的身份及信息后提供相應服務,銀行的客戶之間可以通過銀行相互認證身份及行為。
首先定義密鑰模式。認證雙方使用1024位密鑰,密鑰由銀行方通過采集隨機種子隨機生成,密鑰具有隨機性(確切地說是偽隨機性),通過認證客戶身份后進行共享,秘密保存。
其次定義一次性變量模式。一次性變量采用雙方共用的模式,使用大于零的整數(shù),開始時只需保存可用變量范圍,即記錄保存最小可用整數(shù)1,使用時取出可用整數(shù)變量,并將原最小可用整數(shù)調(diào)整為取出的整數(shù)加1,以調(diào)整可用整數(shù)范圍,使用時記錄當前一次性變量的使用狀態(tài)。本方案的一次性變量通常按整數(shù)順序使用,從最小可用開始使用,相對同一密鑰和認證函數(shù),在用來進行了一次有效認證后就不再重復使用,但多個密鑰可共用同一個一次性變量,這時該一次性變量有多個使用狀態(tài);一次性變量可以作廢,當一個一次性變量受到三次攻擊后作廢,即如果該變量用來驗證了三次,相應的消息認證碼都不正確,則該變量作廢;一次性變量也可以跳號使用,但跳號間隔不能超過5個整數(shù)。此外,還可以增加其他安全措施,比如在受到10次攻擊后,該帳戶被鎖定,只有使用一次生變量認證的消息進行解鎖后,該帳戶才能進行使用其他交易,并且每分鐘只能進行一次解鎖操作。
確定生成消息認證碼函數(shù)及運算模式。首先使用一次性變量將原密鑰K通過不同的變形得到K1和K2,變形方法可以是使用不同的變量Va、Vb和一次性變量V1使用MD5函數(shù)對原密鑰進行混淆,重復計算8次合并結(jié)果可得到新的1024位密鑰;然后用K、K1密鑰組使用MD5函數(shù)對一次性變量及交易消息生成128位的消息認證碼,為方便使用,再將消息各字節(jié)(8位為一字節(jié))除以10取余數(shù),得到16個阿拉伯數(shù)字號碼,這可以作為發(fā)送方的消息認證碼,消息認證碼的字符集是阿拉伯數(shù)字。同樣以K、K2組對結(jié)果消息作類似的運算,得到的16個阿拉伯數(shù)字號碼作為結(jié)果的應答消息認證碼。如果需要多次請求、應答過程,可以類似地通過密鑰變形得到多個密鑰組進行認證,為方便起見,對于有兩次以上信息交換過程的交易,消息認證碼取8個阿拉伯數(shù)字,可同樣保證交易安全。具體算法表示如下K為1024位密鑰,K1、K2為變形后的1024位密鑰,K11到K18和K21到K28為中間結(jié)果,Va、Vb為密鑰變形變量(128位),V1為一次性變量,H表示MD5函數(shù),F(xiàn)表示轉(zhuǎn)換為阿位伯數(shù)字函數(shù),M為交易消息,MR為交易結(jié)果消息,MACq為發(fā)送請求方認證碼,MACa為應答方認證碼。
K11=H(K,V1,Va)K12=H(K,V1,K11)……K18=H(K,V1,K17)K1=K11+K12+K13+K14+K15+K16+K17+K18(“+”表示串接合并)同樣地K21=H(K,V1,Vb)K22=H(K,V1,K21)……K28=H(K,V1,K27)K2=K21+K22+K23+K24+K25+K26+K27+K28(“+”表示串接合并)
MAC1=H(K,V1,M,K1)MACq=F(MAC1)MAC2=H(K,V1,MR,K2)MACa=F(MAC2)銀行及客戶認證主體。
銀行認證主體是銀行交易認證服務器,是一個交易認證系統(tǒng)。其功能主要有三方面1、信息存儲和共享。它保存客戶的信息,包括客戶號、客戶關(guān)聯(lián)賬號、共享密鑰以及享的一次性變量;提供隨機密鑰和一次性變量與客戶進行共享,密鑰信息經(jīng)加密后保存。
2、交易認證。接受客戶交易請求,經(jīng)認證后提交給銀行各交易系統(tǒng)處理;對各交易系統(tǒng)返回的處理結(jié)果形成結(jié)果消息,并對結(jié)果消息生成認證碼,返回結(jié)果給客戶。
3、保存交易信息以供查詢。銀行交易認證服務器保存各項交易信息以提供客戶隨時查詢服務。
銀行交易認證服務器可通過銀行內(nèi)部安全網(wǎng)絡連接到各銀行終端,提供各種銀行終端服務,也可以通過自定義協(xié)議連接到WEB服務器以提供各種網(wǎng)上銀行服務,可以連接到電話銀行接入服務器,提供各種電話銀行服務,還可以連接到短信接入服務器,以提供各種短信交易服務。認證服務器可以連接到各種通訊接入設施,來提供相應的服務,并且所有的服務可以使用相同的交易協(xié)議。
客戶認證主體是客戶認證器。由于密鑰很長,客戶難以記憶,而且需要對交易消息計算消息認證碼,客戶不可能通過人工完成,而借用電腦終端一方面不夠安全,使用攜帶也十分不便。但因為算法簡單,所需保存信息量不大,故完全可以集成到芯片上??蛻粽J證器必須存儲客戶的信息包括客戶號、密鑰、一次性變量及狀態(tài);能夠完成交易消息的消息認證碼的計算及驗證;與外界通信可以通過三種方式接觸式信息交換,非接觸式信息交換,還有通過液晶顯示和小鍵盤進行人工信息交換,這樣可以方便使用各種信息終端。當然,如果你喜歡使用個人電腦來完成客戶認證主體功能也是可以的。
銀行交易認證過程。
簡單的交易過程可以通過一次交易請求和應答實現(xiàn),這是一次交易信息交換過程。對復雜的交易可以通過多次交易信息交換過程來完成。以下是一次交易請求和應答的交易信息交換過程實現(xiàn)模式1、客戶方發(fā)起交易請求。
交易信息通常包括客戶號,交易碼,交易關(guān)鍵字(對方賬號、交費編號等等),發(fā)生金額。
分別用CODE、KEY、AMOUNT表示上述后三項,V1為最小可用一次性變量,M1為發(fā)起交易消息,K1為變形后密鑰,H為消息認證函數(shù),則M1=CODE+KEY+AMOUNTMAC1=H(K,V1,M1,K1)在完成交易消息認證碼計算后,標記當前一次性變量的使用狀態(tài),將客戶號、V1、M1和MAC1一起發(fā)送給銀行認證服務器。
2、銀行認證服務器認證交易消息。認證服務器在接收到交易消息后,先檢查一次性變量是否可用,如不可用,則返回客戶最新可用的一次性變量以作同步;如變量正常可用,再通過同樣計算得到交易消息認證碼,并與客戶傳送的進行比較,如果不相同,則標記當前一次性變量的無效使用次數(shù),返回出錯給客戶。如果驗證無誤,則標記當前一次性變量為已使用,將交易消息送到銀行交易系統(tǒng)處理。
3、銀行交易系統(tǒng)接收和處理交易信息,并返回結(jié)果。
4、銀行認證服務器對交易結(jié)果進行認證。交易結(jié)果RESULT成功標志為1,失敗為0,仍使用當前交易的一次性變量,使用后必須標記其狀態(tài),但使用的密鑰經(jīng)變形后不同。
M2=CODE+KEY+AMOUNT+RESULTMAC2=H(K,V1,M2,K2)銀行認證服務器將交易結(jié)果RESULT以及結(jié)果消息認證碼MAC2一起返回給客戶,其他信息相同可以不必傳送。
5、客戶驗證交易結(jié)果。
客戶方接收到交易結(jié)果消息后,通過同樣計算得到交易結(jié)果消息認證碼,比較以驗證消息認證碼無誤和當前交易的一次性變量及其狀態(tài)也無誤,則可以確認交易結(jié)果,否則可以肯定結(jié)果消息被更改或傳輸過程錯誤,需要重新取回結(jié)果。驗證完成后,標記一次性變量相應使用狀態(tài)。
上述是一個通用的交易認證過程,現(xiàn)舉例客戶A與客戶B的轉(zhuǎn)賬過程。
客戶A轉(zhuǎn)賬100元到客戶B賬戶。為確保交易時一次性變量的新鮮性和同步使用,定義轉(zhuǎn)賬協(xié)議分為兩次交易信息交換過程,原密鑰經(jīng)類似變形可得到4個新密鑰K1、K2、K3、K4。
1、資金轉(zhuǎn)出方客戶A,計算提交資金轉(zhuǎn)賬消息認證碼,標記一次性變量使用狀態(tài)為1,并將交易消息傳送給銀行認證服務器。交易提出消息認證碼計算如下MAC1=H(K,V1,M1,K1)2、銀行認證服務器同樣計算消息認證碼,驗證客戶A的轉(zhuǎn)賬消息,標記客戶A當前一次性變量使用狀態(tài)為1,然后轉(zhuǎn)賬請求發(fā)送給轉(zhuǎn)賬交易服務器。
3、轉(zhuǎn)賬交易服務器驗證相關(guān)賬戶狀態(tài)及資金,完成資金轉(zhuǎn)出,并將結(jié)果返回給認證服務器。此時資金還沒有轉(zhuǎn)入客戶B的賬戶,只是掛賬到應付科目。
4、銀行認證服務器接收到資金轉(zhuǎn)出結(jié)果,計算資金轉(zhuǎn)出結(jié)果消息認證碼,標記當前一次性變量使用狀態(tài)為2,將資金轉(zhuǎn)出結(jié)果消息返回給客戶A。提出應答消息認證碼計算如下MAC2=H(K,V1,M2,K2)5、客戶A使用相同計算以驗證提交資金轉(zhuǎn)賬的結(jié)果,如成功,則進行交易確認,類似地再次計算交易確認消息認證碼,并標記當前一次性變量使用狀態(tài)為3。交易確認消息認證碼計算如下MAC3=H(K,V1,M1,K3)6、確認交易時,可以通過多種方式進行。為防止轉(zhuǎn)賬出現(xiàn)人為錯誤,如果客戶A在交易確認時能同時提交客戶B的戶名認證,例如網(wǎng)上交易、手機短信交易或人工服務中心等等,那么客戶可以直接將轉(zhuǎn)賬確認消息和對方客戶名稱一起發(fā)送給銀行認證中心進行認證(交易服務器在確認交易資金轉(zhuǎn)入時需驗證轉(zhuǎn)入方戶名);或者交易過程是通過無線非接觸方式,對方賬號通過自動輸入,使用自動或半自動方式進行計算消息認證碼,這種情況不會出現(xiàn)人為錄入錯誤,也可以直接發(fā)送到銀行進行認證;否則,客戶A要將交易確認的消息認證碼交給客戶B,必須由客戶B發(fā)起確認交易,這樣可以確保不會轉(zhuǎn)錯賬戶。
7、銀行認證服務器收到交易確認消息后,驗證確認消息,同樣標記客戶A當前一次性變量使用狀態(tài)為3,將交易確認消息發(fā)送給交易服務器處理。
8、銀行交易服務器接收交易確認消息,驗證該筆交易已提出,如果需要則驗證轉(zhuǎn)入客戶B的賬戶名稱,然后將資金轉(zhuǎn)入客戶B的賬戶,為增加安全性,可以同時對客戶B賬戶的相應轉(zhuǎn)入資金實施定時凍結(jié),比如在凍結(jié)24小時后才可以使用。交易完成后,將交易結(jié)果返回給認證服務器。
9、認證服務器接收到交易確認結(jié)果,生成交易結(jié)果消息,分別計算客戶A、客戶B的交易結(jié)果消息認證碼,在計算客戶B的消息認證碼時可以取客戶B最新可用的一次性變量使用,并且分別對客戶A和客戶B當前交易的一次性變量狀態(tài)更新標記,將交易結(jié)果保存,然后將客戶A以及客戶B的結(jié)果消息以及相應的消息認證碼,返回給交易確認請求方。交易確認應答消息認證碼計算如下客戶A交易結(jié)果消息認證碼MAC4=H(K,V1,M4,K4)客戶B交易結(jié)果消息認證碼用CODE2表示轉(zhuǎn)入確認交易碼,關(guān)鍵字KEY是該筆交易流水號(還可以增加認證對方賬號后幾位),AMOUNT為交易金額,RESULT表示結(jié)果狀態(tài)。
MRb=CODE2+KEY+AMOUNT+RESULTMAC2b=H(Kb,V1b,MRb,K2b)如客戶B直接向銀行服務器提出請求結(jié)果認證Mb=CODE2+KEY+AMOUNTMAC1b=H(Kb,V1b,Mb,K1b)10、交易確認請求方接收到交易結(jié)果后,可以將交易對方的交易結(jié)果消息及相應消息認證碼交給對方,或者雙方都可以從銀行服務器重新取回交易結(jié)果及相應消息認證碼。交易雙方通過與銀行認證服務器同樣方法計算以驗證交易結(jié)果,并標記一次性變量的最終狀態(tài),這樣交易雙方都可以確認交易結(jié)果。
有益的效果。銀行交易認證通過使用一次性變量的密鑰數(shù)字認證方法,可以確保交易信息的完整的、新鮮性認證,通過多次認證過程,還可以確保認證雙方、甚至多方認證的身份認證。使得交易過程在確保安全的前提下,認證過程相對簡單化,其交易的安全性只與認證的雙方主體相關(guān),與所使用的通訊方式或通訊終端無關(guān),這樣就可以使用簡單的結(jié)構(gòu)實現(xiàn)高度的安全性和便利性。
使用本方案構(gòu)造網(wǎng)上銀行(指通過Internet網(wǎng)絡使用的銀行服務),可以將認證服務器與WEB服務器之間使用自定義協(xié)議隔離,比如類似串口通訊的協(xié)議,每個交易消息只能通過自定義協(xié)議進行傳送,這樣外部攻擊者就不可能入侵到認證服務器,而每個交易消息必須得到認證才能確認,任何不是認證主體的第三者都不可能偽造或重放交易消息,這樣就可以確保資金的安全性,為保障服務安全(指服務的質(zhì)量和效果,而不是資金安全),在WEB服務器與Internet網(wǎng)絡的連接需要使用防火墻,以防止各種干擾服務的攻擊,與客戶的通信還可以使用安全套接字協(xié)議層(SSL),增加保密性和增強安全性。網(wǎng)上銀行的資金安全與WEB服務器、外部網(wǎng)防火墻、互聯(lián)網(wǎng)通訊以及客戶所使用的電腦無關(guān),資金安全只與認證主體有關(guān),即與銀行認證服務器和客戶認證器有關(guān)。所以客戶也可以在任意一臺聯(lián)網(wǎng)的電腦上使用網(wǎng)上銀行,只要確??蛻粽J證器的隔離安全,即使該電腦是不可以信任的,仍然可以確保資金的安全。
由于本方案的消息認證碼使用的字符集是阿拉伯數(shù)字,故客戶很容易通過網(wǎng)上銀行、電話銀行、手機短信甚至人工服務中心等渠道進行各種交易,可以方便各種交易隨時隨地的使用。而銀行和客戶的資金安全性與所使用的各種通訊系統(tǒng)及渠道無關(guān)。由于使用相同認證,所以各種交易方式的交易協(xié)議基本相同,在各種渠道的交易方式具有類似性,易于使用,而且銀行在開發(fā)和維護系統(tǒng)時,其共性可以通用,可以節(jié)省大量時間和資源。
權(quán)利要求
1.一種密鑰數(shù)字認證方法,其特征是使用密鑰通過計算和檢驗消息認證碼對消息進行認證時使用一次性變量;一次性變量在使用前需要保存可使用的變量及其使用狀態(tài),消息認證碼的計算必須使用一次性變量與消息一起進行運算,在認證消息時,不但要驗證消息認證碼,還必須驗證同時使用的一次性變量及其使用狀態(tài);在使用一次性變量后,必須標記和保存其使用狀態(tài);對于確定的密鑰和認證函數(shù),一次性變量只用來有效認證消息一次。
2.根據(jù)權(quán)利要求1所述的密鑰數(shù)字認證方法,一次性變量由多個密鑰共同使用,并具有多個使用狀態(tài),對應于每一個不同的密鑰,一次性變量有不同的使用狀態(tài);一次性變量對于不同的密鑰,使用與密鑰相對應的狀態(tài)來認證消息。
全文摘要
本方法是使用消息認證碼對消息進行認證時使用一次性變量。一次性變量在使用前需要將其范圍及其使用狀態(tài)保存,消息認證碼的計算必須使用一次性變量與消息一起進行運算,在認證消息時,不但要驗證消息認證碼,還必須驗證同時使用的一次性變量及其使用狀態(tài),在使用一次性變量后,必須標記和保存其使用狀態(tài);對于確定的密鑰和認證函數(shù),一次性變量只用來有效認證消息一次。通過使用一次性變量,可以準確、簡單、方便、有效地實現(xiàn)認證消息的完整性和新鮮性,而且可以多方面有效地防止安全性攻擊;通過一次性變量的同步使用,可以有效實現(xiàn)身份認證;在簡化認證過程和認證協(xié)議的同時,增強了安全性,使得很多原來復雜的認證應用得以簡單實現(xiàn)。
文檔編號H04L9/00GK1980124SQ200510101819
公開日2007年6月13日 申請日期2005年12月5日 優(yōu)先權(quán)日2005年12月5日
發(fā)明者劉任 申請人:劉任