認證方法、服務器及客戶端的制作方法
【專利摘要】本申請?zhí)峁┝苏J證方法、服務器和客戶端,其中一種身份認證方法可以應用于服務器上,服務器分別與客戶端與第三方相連,該方法包括:響應于當前用戶通過客戶端發(fā)送的私鑰獲取請求,將所述第一部分客戶端私鑰發(fā)送給所述客戶端;響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,使用客戶端公鑰證書對所述第一簽名結果進行驗證;其在第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果;第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。本申請實施例可以提高身份認證的安全性和易用性。
【專利說明】
認證方法、服務器及客戶端
技術領域
[0001]本申請涉及互聯網數據安全領域,特別涉及認證方法、服務器及客戶端。
【背景技術】
[0002]目前,隨著互聯網的發(fā)展,越來越多的用戶使用互聯網進行溝通和交易,因為不同的用戶會設置不同的密碼等,因此,在用戶進行涉及身份安全的交易或者登陸操作時,就需要對用戶進行身份認證,以保證網絡交互的安全性。
【發(fā)明內容】
[0003]但是發(fā)明人在研究過程中發(fā)現,現有技術在進行身份認證的時候,一般會采用以文件形式作為數字證書載體的數字簽名方法,但是這種方法需要客戶端保存私鑰,而客戶端由于存在不穩(wěn)定因素,所以私鑰泄漏或者丟失的風險很大,也因此,使得現有技術中的身份認證方法的安全性極低。相應的,也影響了用戶在使用互聯網進行數據傳輸或者交互的體驗。
[0004]因此需要提出一種互聯網上身份認證的方法和系統,來改進這種需要客戶端保存私鑰的認證方式,讓用戶享受便捷的同時有更高的安全保證。
[0005]基于此,本申請?zhí)峁┝藨糜诜掌鞯恼J證方法和應用于客戶端側的身份認證方法,用以提高互聯網數據交互和處理的安全性。
[0006]本申請還提供了一種服務器和客戶端,用以保證上述方法在實際中的實現及應用。
[0007]為了解決上述問題,本申請公開了一種身份認證方法,該方法應用于服務器上,月艮務器分別與客戶端與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該方法可以包括:
[0008]響應于當前用戶通過客戶端發(fā)送的私鑰獲取請求,將所述第一部分客戶端私鑰發(fā)送給所述客戶端;
[0009]響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,使用客戶端公鑰證書對所述第一簽名結果進行驗證;其中,所述第一簽名結果通過以下方式得到:所述客戶端將所述第一部分客戶端私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰,并使用所述完整的用戶端私鑰對用戶提交的簽名原文進行數字簽名,得到第一簽名結果;
[0010]在第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果;
[0011]將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。
[0012]其中,在第一簽名結果驗證不通過的情況下,還包括:
[0013]向客戶端返回錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。
[0014]其中,所述響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,使用客戶端公鑰證書對所述第一簽名結果進行驗證,包括:
[0015]響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,月艮務器獲取自身保存的、與所述客戶端私鑰對應的客戶端公鑰證書;
[0016]使用所述獲取到的客戶端公鑰證書對所述第一簽名結果進行驗證。
[0017]本申請還公開了一種認證方法,該方法應用于客戶端上,所述客戶端與服務器相連,所述服務器與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該方法包括:
[0018]響應于當前用戶觸發(fā)的認證請求,向所述服務器發(fā)送私鑰獲取請求;
[0019]響應于服務器返回所述第一部分用戶私鑰,將所述第一部分用戶私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰;
[0020]使用所述完整的客戶端私鑰對用戶觸發(fā)的交易信息進行數字簽名,得到第一簽名結果;
[0021]將所述第一簽名結果和簽名原文的哈希運算結果發(fā)送至所述服務器,以便所述服務器在對所述第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果,以及,將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。
[0022]其中,在所述服務器對所述第一簽名結果驗證不通過的情況下,還包括:
[0023]接收服務器返回的錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。
[0024]本申請還公開了一種服務器,所述服務器分別與客戶端與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該服務器包括:
[0025]第一發(fā)送模塊,用于響應于當前用戶通過客戶端發(fā)送的私鑰獲取請求,將所述第一部分客戶端私鑰發(fā)送給所述客戶端;
[0026]第一驗證模塊,用于響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,使用客戶端公鑰證書對所述第一簽名結果進行驗證;其中,所述第一簽名結果通過以下方式得到:所述客戶端將所述第一部分客戶端私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰,并使用所述完整的用戶端私鑰對用戶提交的簽名原文進行數字簽名,得到第一簽名結果;
[0027]第一數字簽名模塊,用于在第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果;
[0028]第二發(fā)送模塊,用于將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。
[0029]其中,還包括:
[0030]返回錯誤提示模塊,用于向客戶端返回錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。
[0031 ]其中,所述第一驗證模塊包括:
[0032]獲取子模塊,用于響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,服務器獲取自身保存的、與所述客戶端私鑰對應的客戶端公鑰證書;
[0033]驗證子模塊,用于使用所述獲取到的客戶端公鑰證書對所述第一簽名結果進行驗證。
[0034]本申請還公開了一種客戶端,所述客戶端與服務器相連,所述服務器與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該客戶端包括:
[0035]第三發(fā)送模塊,用于響應于當前用戶觸發(fā)的認證請求,向所述服務器發(fā)送私鑰獲取請求;
[0036]組成證書模塊,用于響應于服務器返回所述第一部分用戶私鑰,將所述第一部分用戶私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰;
[0037]第二數字簽名模塊,用于使用所述完整的客戶端私鑰對用戶觸發(fā)的交易信息進行數字簽名,得到第一簽名結果;
[0038]第四發(fā)送模塊,用于將所述第一簽名結果和簽名原文的哈希運算結果發(fā)送至所述服務器,以便所述服務器在對所述第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果,以及,將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。
[0039]其中,還包括:
[0040]接收錯誤提示模塊,用于接收服務器返回的錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。
[0041 ]與現有技術相比,本申請包括以下優(yōu)點:
[0042]在本申請實施例中,由于服務器和客戶端分別各自保存了一部分客戶端私鑰,因此,即便客戶端把自己保存的那部分客戶端私鑰丟失或者泄露,服務器的另外一部分客戶端私鑰不丟失就不會影響身份認證的過程,這樣也防止了客戶端私鑰被靜態(tài)分析的可能性;因此提高了身份認證的安全性。同時,服務器接收到的是簽名原文的哈希運算結果,并不會在身份認證過程中獲取到簽名原文,因此也保證了用戶和第三方之間的交易安全性。此外,由于用戶的云端私鑰直接在服務器保存,云端公鑰證書在第三方保存,這樣就使得客戶端即便在卸載等的非正常情況下,也不影響身份認證的過程,又提高了身份認證的易用性。自然,也使得用戶在進行互聯網數據交互的時候,不僅安全可靠,還方便易操作,提升了用戶的使用體驗。
【附圖說明】
[0043]為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0044]圖1是本申請的應用于服務器端的認證方法實施例的流程圖;
[0045]圖2是本申請的方法實施例在實際應用中的結構圖;
[0046]圖3是本申請的應用于客戶端上的身份認證方法實施例的流程圖;
[0047]圖4是本申請的服務器實施例的結構框圖;
[0048]圖5是本申請的客戶端實施例的結構框圖。
【具體實施方式】
[0049]下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0050]參考圖1,示出了本申請一種身份認證方法實施例的流程圖,本實施例可以應用于服務器上,該服務器中存儲有用戶終端和認證終端一一對應的綁定關系;該方法可以包括以下步驟:
[0051]步驟101:響應于當前用戶通過客戶端發(fā)送的私鑰獲取請求,將所述第一部分客戶端私鑰發(fā)送給所述客戶端。
[0052]在本實施例中,假設用戶通過操作智能終端上安裝的客戶端觸發(fā)了一次身份認證,例如,在用戶進行交易或者涉及賬號密碼等更新的時候,就需要進行身份認證,在這種情況下,用戶可以將身份認證信息提交給客戶端,而客戶端則可以通過該智能終端向服務器提交一個私鑰獲取請求。其中,客戶端可以是前述智能終端上安裝的手機APP。
[0053]需要說明的是,本實施例中的客戶端私鑰并沒有僅僅保存在客戶端側,而是分為兩部分,將第一部分客戶端私鑰提前發(fā)送給服務器,由服務器來保存第一部分客戶端私鑰,而剩余的第二部分客戶端私鑰再保存在本地客戶端。在實際應用中,假設客戶端私鑰有10個字符串,則可以按照順序將前5個字符串作為第一部分客戶端私鑰,后5個字符串作為第二部分私鑰;當然,也可以將后5個字符串作為第一部分客戶端私鑰,相應的,則前5個字符串就是第二部分客戶端私鑰。當然,“5”僅僅是一個具體示例,本領域技術人員也可以選擇4個或6個作為第一部分客戶端私鑰,只要在實際中將完整的客戶端私鑰分為兩個部分即可,本申請實施例中并不限定如何劃分,這并不影響本申請實施例的實現。
[0054]在本申請實施例中,服務器不僅與客戶端相連,還與第三方相連。參考圖2所示,為實際應用中的場景框架圖。其中,服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書。在本申請實施例中,用戶的私鑰并不是放在本地客戶端保存,而是由服務器保存用戶的私鑰,由第三方存儲對應的公鑰證書,因此,分別稱為云端私鑰和云端公鑰證書。其中,服務器保存了用戶的私鑰,在用戶需要的時候再從服務器中獲取,這樣就避免了客戶端丟失私鑰的情況。
[0055]步驟102:響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,使用客戶端公鑰證書對所述第一簽名結果進行驗證,如果驗證通過,進入步驟103,如果驗證不通過,進入步驟105。
[0056]其中,客戶端請求到服務器側保存的第一部分客戶端私鑰之后,自身保存有第二部分客戶端私鑰,則可以將兩者進行合并,從而組成完成的客戶端私鑰。客戶端再使用該完整的用戶端私鑰對用戶向客戶端提交的簽名原文進行數字簽名,得到第一簽名結果,例如一串字符串或者數字等。其中,數字簽名的算法可以采用例如RSA算法或者SM2算法等。這里的簽名原文即是步驟101中的身份認證信息,如果本次身份認證涉及到賬號密碼的變更,則身份認證信息可以包括賬號信息,舊密碼信息和新密碼信息等,如果本次身份認證涉及到轉賬信息,則身份認證信息可以包括當前賬號信息,對方賬號信息,以及轉賬金額信息等。
[0057]客戶端接著還可以對簽名原文通過哈希算法得到簽名原文的哈希運算結果。哈希(Hash)算法,即散列函數,它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。同時,哈希函數可以將任意長度的輸入經過變化以后得到固定長度的輸出。哈希函數的這種單向特征和輸出數據長度固定的特征使得它可以生成消息或者數據。最后,客戶端將第一簽名結果和簽名原文的哈希運算結果都發(fā)送給服務器,以便服務器使用客戶端公鑰證書對所述第一簽名結果進行驗證。
[0058]具體的,服務器進行驗證的步驟可以包括:
[0059]步驟Al:響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,服務器獲取自身保存的、與所述客戶端私鑰對應的客戶端公鑰證書。
[0060]其中,服務器在接收到客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果后,服務器先獲取自身保存的、與所述客戶端私鑰對應的客戶端公鑰證書??蛻舳怂借€和客戶端公鑰證書是一對數字證書,客戶端私鑰用于客戶端對簽名原文進行數字簽名,客戶端公鑰證書用于服務器對第一簽名信息進行驗簽。
[0061]步驟A2:使用所述獲取到的客戶端公鑰證書對所述第一簽名結果進行驗證。
[0062]服務器再使用獲取到的客戶端公鑰證書對所述第一簽名結果進行驗證。
[0063]步驟103:在第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果。
[0064]如果在步驟102中服務器對第一簽名結果驗證通過,則服務器繼續(xù)使用自身保存的當前用戶的云端私鑰對簽名原文的哈希運算結果進行數字簽名,得到第二簽名結果。其中,數字簽名的算法仍然可以采用例如RSA算法或者SM2算法等,服務器只需要和進行驗簽的第三方之間約定好算法即可。
[0065]步驟104:將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。
[0066]服務器再將第二簽名結果和哈希運算結果一起發(fā)送給第三方,以便第三方根據自身保存的云端公鑰證書對所述第二簽名結果進行驗證。其中,第三方指的是需要和服務器進行交互以實現對第二簽名結果進行的終端或服務器。對于第三方來說,僅需要保存用戶的云端公鑰證書即可,第三方采用和服務器相同的簽名算法對第二簽名結果進行驗簽,如果得到的驗簽結果和哈希運算結果一致,則驗簽通過,反之則不通過。如果第三方驗簽不通過,則會將驗簽不通過的結果信息通知服務器,服務器則拒絕客戶端發(fā)起的本次身份認證請求。
[0067]步驟105:向客戶端返回錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。
[0068]假設在步驟102中驗證不通過,則說明客戶端的用戶身份不是正確的用戶身份,例如,賬號和密碼錯誤,或者轉賬密碼錯誤等,則服務器可以向客戶端返回錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過,并拒絕客戶端提交的本次身份認證請求。
[0069]可見,在本申請實施例中,由于服務器和客戶端分別各自保存了一部分客戶端私鑰,因此,即便客戶端把自己保存的那部分客戶端私鑰丟失或者泄露,服務器的另外一部分客戶端私鑰不丟失就不會影響身份認證的過程,這樣也防止了客戶端私鑰被靜態(tài)分析的可能性;因此提高了身份認證的安全性。同時,服務器接收到的是簽名原文的哈希運算結果,并不會在身份認證過程中獲取到簽名原文,因此也保證了用戶和第三方之間的交易安全性。此外,由于用戶的云端私鑰直接在服務器保存,云端公鑰證書在第三方保存,這樣就使得客戶端即便在卸載等的非正常情況下,也不影響身份認證的過程,又提高了身份認證的易用性。自然,也使得用戶在進行互聯網數據交互的時候,不僅安全可靠,還方便易操作,提升了用戶的使用體驗。
[0070]參考圖3,示出了本申請一種認證方法實施例的流程圖,本實施例可以應用于客戶端上,客戶端與服務器相連,服務器與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;本實施例可以包括以下步驟:
[0071]步驟301:響應于當前用戶觸發(fā)的認證請求,向所述服務器發(fā)送私鑰獲取請求。
[0072]在本實施例中,與上一個實施例的不同之處在于,執(zhí)行主體為客戶端。用戶在進行交易或者登陸等涉及身份安全的操作時,向客戶端提交交易信息或者登陸信息等作為簽名原文,即,觸發(fā)了認證請求之后,客戶端向服務器發(fā)送私鑰獲取請求,該私鑰獲取請求用于請求服務器返回第一部分客戶端私鑰。
[0073]步驟301:響應于服務器返回所述第一部分用戶私鑰,將所述第一部分客戶端私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰。
[0074]在本實施例中,如果服務器向客戶端返回了第一部分用戶私鑰,則客戶端先將第一部分客戶端私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰。其中,客戶端和服務器可以預先約定好客戶端私鑰如何劃分為兩個部分,以及哪個部分保存在哪里,以便后續(xù)客戶端可以準確無誤的組合出第二部分客戶端私鑰。
[0075]步驟303:使用所述完整的客戶端私鑰對用戶觸發(fā)的交易信息進行數字簽名,得到第一簽名結果。
[0076]客戶端在使用所述完整的客戶端私鑰對用戶觸發(fā)的交易信息進行數字簽名,得到第一簽名結果。
[0077]步驟304:將所述第一簽名結果和簽名原文的哈希運算結果發(fā)送至所述服務器,以便所述服務器在對所述第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果,以及,將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。
[0078]客戶端還可以將簽名原文進行哈希運算,從而得到簽名原文的哈希運算結果,再將第一簽名結果和簽名原文的哈希運算結果發(fā)送至所述服務器,由服務器在對所述第一簽名結果進行驗證,并在驗證通過的情況下,使用自身保存的當前用戶的云端私鑰對該哈希運算結果進行數字簽名,得到第二簽名結果,然后服務器再將所述第二簽名結果和哈希運算結果發(fā)送至第三方,由第三方根據自身保存的云端公鑰證書對所述第二簽名結果進行驗證,如果對比哈希運算結果相同,則說明驗證通過,則通過所述當前用戶的交易請求。
[0079]進一步的,在所述服務器對所述第一簽名結果驗證不通過的情況下,還可以包括:
[0080]客戶端接收服務器返回的錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。
[0081]在本申請實施例中,由于服務器和客戶端分別各自保存了一部分客戶端私鑰,因此,即便客戶端把自己保存的那部分客戶端私鑰丟失或者泄露,服務器的另外一部分客戶端私鑰不丟失就不會影響身份認證的過程,這樣也防止了客戶端私鑰被靜態(tài)分析的可能性;因此提高了身份認證的安全性。同時,服務器接收到的是簽名原文的哈希運算結果,并不會在身份認證過程中獲取到簽名原文,因此也保證了用戶和第三方之間的交易安全性。此外,由于用戶的云端私鑰直接在服務器保存,云端公鑰證書在第三方保存,這樣就使得客戶端即便在卸載等的非正常情況下,也不影響身份認證的過程,又提高了身份認證的易用性。自然,也使得用戶在進行互聯網數據交互的時候,不僅安全可靠,還方便易操作,提升了用戶的使用體驗。
[0082]對于前述的方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請并不受所描述的動作順序的限制,因為依據本申請,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本申請所必須的。
[0083]與上述本申請一種身份認證方法實施例所提供的方法相對應,參見圖4,本申請還提供了一種服務器實施例,在本實施例中,所述服務器分別與客戶端與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該服務器可以包括:
[0084]第一發(fā)送模塊401,用于響應于當前用戶通過客戶端發(fā)送的私鑰獲取請求,將所述第一部分客戶端私鑰發(fā)送給所述客戶端。
[0085]第一驗證模塊402,用于響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,使用客戶端公鑰證書對所述第一簽名結果進行驗證;其中,所述第一簽名結果通過以下方式得到:所述客戶端將所述第一部分客戶端私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰,并使用所述完整的用戶端私鑰對用戶提交的簽名原文進行數字簽名,得到第一簽名結果。
[0086]其中,所述第一驗證模塊402可以包括:
[0087]獲取子模塊,用于響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,服務器獲取自身保存的、與所述客戶端私鑰對應的客戶端公鑰證書;和,驗證子模塊,用于使用所述獲取到的客戶端公鑰證書對所述第一簽名結果進行驗證。
[0088]第一數字簽名模塊403,用于在第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果。
[0089]第二發(fā)送模塊404,用于將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。
[0090]其中,該裝置還可以包括:
[0091]返回錯誤提示模塊405,用于向客戶端返回錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。
[0092]在本申請實施例中,由于服務器和客戶端分別各自保存了一部分客戶端私鑰,因此,即便客戶端把自己保存的那部分客戶端私鑰丟失或者泄露,服務器的另外一部分客戶端私鑰不丟失就不會影響身份認證的過程,這樣也防止了客戶端私鑰被靜態(tài)分析的可能性;因此提高了身份認證的安全性。同時,服務器接收到的是簽名原文的哈希運算結果,并不會在身份認證過程中獲取到簽名原文,因此也保證了用戶和第三方之間的交易安全性。此外,由于用戶的云端私鑰直接在服務器保存,云端公鑰證書在第三方保存,這樣就使得客戶端即便在卸載等的非正常情況下,也不影響身份認證的過程,又提高了身份認證的易用性。自然,也使得用戶在進行互聯網數據交互的時候,不僅安全可靠,還方便易操作,提升了用戶的使用體驗。
[0093]與上述本申請一種身份認證方法實施例所提供的方法相對應,參考圖5所示,本申請還提供了一種客戶端實施例,在本實施例中,所述客戶端與服務器相連,所述服務器與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該客戶端可以包括:
[0094]第三發(fā)送模塊501,用于響應于當前用戶觸發(fā)的認證請求,向所述服務器發(fā)送私鑰獲取請求。
[0095]組成證書模塊502,用于響應于服務器返回所述第一部分用戶私鑰,將所述第一部分用戶私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰。
[0096]第二數字簽名模塊503,用于使用所述完整的客戶端私鑰對用戶觸發(fā)的交易信息進行數字簽名,得到第一簽名結果。
[0097]第四發(fā)送模塊504,用于將所述第一簽名結果和簽名原文的哈希運算結果發(fā)送至所述服務器,以便所述服務器在對所述第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果,以及,將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。
[0098]其中,該客戶端還可以包括:
[0099]接收錯誤提示模塊505,用于接收服務器返回的錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。
[0100]在本申請實施例中,由于服務器和客戶端分別各自保存了一部分客戶端私鑰,因此,即便客戶端把自己保存的那部分客戶端私鑰丟失或者泄露,服務器的另外一部分客戶端私鑰不丟失就不會影響身份認證的過程,這樣也防止了客戶端私鑰被靜態(tài)分析的可能性;因此提高了身份認證的安全性。同時,服務器接收到的是簽名原文的哈希運算結果,并不會在身份認證過程中獲取到簽名原文,因此也保證了用戶和第三方之間的交易安全性。此外,由于用戶的云端私鑰直接在服務器保存,云端公鑰證書在第三方保存,這樣就使得客戶端即便在卸載等的非正常情況下,也不影響身份認證的過程,又提高了身份認證的易用性。自然,也使得用戶在進行互聯網數據交互的時候,不僅安全可靠,還方便易操作,提升了用戶的使用體驗。
[0101]需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
[0102]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
[0103]以上對本申請所提供的認證方法、服務器和客戶端進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術人員,依據本申請的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制。
【主權項】
1.一種認證方法,其特征在于,該方法應用于服務器上,所述服務器分別與客戶端與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該方法包括: 響應于當前用戶通過客戶端發(fā)送的私鑰獲取請求,將所述第一部分客戶端私鑰發(fā)送給所述客戶端; 響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,使用客戶端公鑰證書對所述第一簽名結果進行驗證;其中,所述第一簽名結果通過以下方式得到:所述客戶端將所述第一部分客戶端私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰,并使用所述完整的用戶端私鑰對用戶提交的簽名原文進行數字簽名,得到第一簽名結果; 在第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果; 將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。2.根據權利要求1所述的方法,其特征在于,在第一簽名結果驗證不通過的情況下,還包括: 向客戶端返回錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。3.根據權利要求1所述的方法,其特征在于,所述響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,使用客戶端公鑰證書對所述第一簽名結果進行驗證,包括: 響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,服務器獲取自身保存的、與所述客戶端私鑰對應的客戶端公鑰證書; 使用所述獲取到的客戶端公鑰證書對所述第一簽名結果進行驗證。4.一種認證方法,其特征在于,該方法應用于客戶端上,所述客戶端與服務器相連,所述服務器與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該方法包括: 響應于當前用戶觸發(fā)的認證請求,向所述服務器發(fā)送私鑰獲取請求; 響應于服務器返回所述第一部分用戶私鑰,將所述第一部分用戶私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰; 使用所述完整的客戶端私鑰對用戶觸發(fā)的交易信息進行數字簽名,得到第一簽名結果; 將所述第一簽名結果和簽名原文的哈希運算結果發(fā)送至所述服務器,以便所述服務器在對所述第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果,以及,將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。5.根據權利要求1所述的方法,其特征在于,在所述服務器對所述第一簽名結果驗證不通過的情況下,還包括: 接收服務器返回的錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。6.—種服務器,其特征在于,所述服務器分別與客戶端與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該服務器包括: 第一發(fā)送模塊,用于響應于當前用戶通過客戶端發(fā)送的私鑰獲取請求,將所述第一部分客戶端私鑰發(fā)送給所述客戶端; 第一驗證模塊,用于響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,使用客戶端公鑰證書對所述第一簽名結果進行驗證;其中,所述第一簽名結果通過以下方式得到:所述客戶端將所述第一部分客戶端私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰,并使用所述完整的用戶端私鑰對用戶提交的簽名原文進行數字簽名,得到第一簽名結果; 第一數字簽名模塊,用于在第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果; 第二發(fā)送模塊,用于將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。7.根據權利要求6所述的服務器,其特征在于,還包括: 返回錯誤提示模塊,用于向客戶端返回錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。8.根據權利要求6所述的服務器,其特征在于,所述第一驗證模塊包括: 獲取子模塊,用于響應于當前用戶通過客戶端發(fā)送的第一簽名結果和簽名原文的哈希運算結果,服務器獲取自身保存的、與所述客戶端私鑰對應的客戶端公鑰證書; 驗證子模塊,用于使用所述獲取到的客戶端公鑰證書對所述第一簽名結果進行驗證。9.一種客戶端,其特征在于,所述客戶端與服務器相連,所述服務器與第三方相連,所述服務器中存儲有第一部分客戶端私鑰和用戶的云端私鑰,所述第三方存儲有所述用戶的云端公鑰證書;該客戶端包括: 第三發(fā)送模塊,用于響應于當前用戶觸發(fā)的認證請求,向所述服務器發(fā)送私鑰獲取請求; 組成證書模塊,用于響應于服務器返回所述第一部分用戶私鑰,將所述第一部分用戶私鑰和自身存儲的第二部分客戶端私鑰組成完整的客戶端私鑰; 第二數字簽名模塊,用于使用所述完整的客戶端私鑰對用戶觸發(fā)的交易信息進行數字簽名,得到第一簽名結果; 第四發(fā)送模塊,用于將所述第一簽名結果和簽名原文的哈希運算結果發(fā)送至所述服務器,以便所述服務器在對所述第一簽名結果驗證通過的情況下,使用所述當前用戶的云端私鑰對所述哈希運算結果進行數字簽名,得到第二簽名結果,以及,將所述第二簽名結果和所述哈希運算結果發(fā)送至第三方,以便所述第三方根據云端公鑰證書對所述第二簽名結果和哈希運算結果進行驗證,如果驗證通過,則通過所述當前用戶的交易請求。10.根據權利要求9所述的客戶端,其特征在于,還包括: 接收錯誤提示模塊,用于接收服務器返回的錯誤提示,所述錯誤提示用于提示所述當前用戶本次認證不通過。
【文檔編號】H04L9/32GK105827412SQ201610143832
【公開日】2016年8月3日
【申請日】2016年3月14日
【發(fā)明人】李闖, 林峰, 張行
【申請人】中金金融認證中心有限公司