本發(fā)明涉及移動安全技術(shù)領(lǐng)域,尤其涉及一種用于進行虛擬卡交易的方法和裝置。
背景技術(shù):
虛擬卡是對實體卡片的異形化,通常由運行在用戶手機的移動應用客戶端及移動應用平臺所組成,例如網(wǎng)上銀行的電子錢包。
hce(hostcardemulation)技術(shù)又稱為主機卡模擬技術(shù)。hce模式下終端安全模塊se被遠程托管的云端se(cloudsecureelement或seonthecloud)所取代。
移動應用平臺使用密碼卡、加密機等硬件密碼設備作為云端se的安全載體,用于安全的保存、使用虛擬卡密鑰。
數(shù)字證書是指網(wǎng)上金融、電子政務或電子商務等網(wǎng)上電子活動中,符合《中華人民共和國電子簽名法》、能夠證實簽名人與電子簽名數(shù)據(jù)具有可靠關(guān)聯(lián)性的一種電子簽名認證證書。
由于移動終端運行環(huán)境的脆弱性,移動應用無可避免的暴露在黑色產(chǎn)業(yè)鏈的各種攻擊之下,不得不面對密鑰被竊取、會話被劫持、客戶端被仿冒等安全威脅。如何確保移動應用的實體安全,如何合法的使用云端se,如何生成可靠的虛擬卡交易簽名憑證,確認用戶身份,確保交易不被偽造等問題,是當前亟需解決的技術(shù)難題。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的在于提供一種用于進行虛擬卡交易的方法和裝置,解決如何在強認證的前提下,由受信客戶端使用云端se,產(chǎn)生可靠的虛擬卡sm2簽名憑證的問題。
本發(fā)明一方面提供了一種用于進行虛擬卡交易的方法,該方法應用于移動應用平臺中,所述移動應用平臺存儲客戶端的第一客戶端私鑰、客戶端公鑰和客戶端的虛擬卡私鑰,客戶端存儲第二客戶端私鑰,認證端存儲客戶端的虛擬卡公鑰證書,包括:
接收客戶端發(fā)送的私鑰獲取請求,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡交易數(shù)據(jù)計算的摘要信息;并向所述客戶端返回其第一客戶端私鑰;
響應于所述客戶端發(fā)送的基于第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰生成的客戶端簽名,通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。
進一步的,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡交易數(shù)據(jù)計算的摘要信息,包括:保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的虛擬卡待簽數(shù)據(jù)計算的摘要信息;具體為:
保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)及虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息;和/或
保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息。
進一步的,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)和虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息,包括:
客戶端接收受理終端發(fā)送的終端隨機數(shù);同時生成虛擬卡隨機數(shù);
對虛擬卡雜湊和終端隨機數(shù)及虛擬卡隨機數(shù)經(jīng)過兩次哈希運算后得到摘要信息;
保存客戶端發(fā)送的私鑰獲取請求攜帶的所述摘要信息。
進一步的,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息,包括:
客戶端響應于客戶端與電商平臺生成的訂單信息;
對虛擬卡雜湊和所述訂單信息經(jīng)過兩次哈希運算后得到摘要信息;
保存客戶端發(fā)送的私鑰獲取請求攜帶的所述摘要信息。
進一步的,所述響應于所述客戶端發(fā)送的基于第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰生成的客戶端簽名,包括:
客戶端將接收到的第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰;
接收隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù);
通過所述隨機數(shù)計算橢圓曲線點;
基于所述橢圓曲線點和客戶端私鑰計算得到客戶端簽名;
響應于所述客戶端發(fā)送的所述客戶端簽名。
進一步的,所述通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;包括:
驗證所述客戶端簽名是否為該客戶端對應的客戶端簽名信息,驗證失敗,向客戶端返回錯誤提示;驗證通過;則
獲取存儲的客戶端公鑰和存儲的摘要信息驗證所述客戶端簽名是否正確,驗證失敗,向客戶端返回錯誤提示,驗證通過,使用存儲的虛擬卡私鑰產(chǎn)生虛擬卡簽名。
進一步的,所述由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名,包括:
將虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名以及虛擬卡簽名驗證請求發(fā)送至認證端;
接收認證端返回的基于客戶端的虛擬卡公鑰證書對所述虛擬卡簽名的驗證結(jié)果,驗證失敗,向客戶端返回錯誤提示;驗證通過,通過所述虛擬卡交易請求。
本發(fā)明還提供了一種用于進行虛擬卡交易的方法,該方法應用于客戶端中,所述客戶端存儲第二客戶端私鑰,移動應用平臺存儲客戶端的第一客戶端私鑰、客戶端公鑰和客戶端的虛擬卡私鑰,認證端存儲客戶端的虛擬卡公鑰證書,包括:
響應于客戶端生成的虛擬卡交易數(shù)據(jù);基于所述虛擬卡交易數(shù)據(jù)向移動應用平臺發(fā)送私鑰獲取請求,所述私鑰獲取請求攜帶基于虛擬卡交易數(shù)據(jù)計算的摘要信息;
接收移動應用平臺發(fā)送的第一客戶端私鑰;
基于第一客戶端私鑰和存儲的第二客戶端私鑰合成客戶端私鑰;通過所述客戶端私鑰對所述虛擬卡交易數(shù)據(jù)簽名后生成客戶端簽名,并將所述客戶端簽名發(fā)送至移動應用平臺;以便所述移動應用平臺通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。
進一步的,所述私鑰獲取請求攜帶基于虛擬卡交易數(shù)據(jù)計算的摘要信息,包括:所述私鑰獲取請求攜帶基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的虛擬卡待簽數(shù)據(jù)計算的摘要信息;具體為:
所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)及虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息;和/或
所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息。
進一步的,所述私鑰獲取請求攜帶的客戶端基于終端隨機數(shù)和虛擬卡隨機數(shù)計算的摘要信息,包括:
客戶端接收受理終端發(fā)送的終端隨機數(shù);同時生成虛擬卡隨機數(shù);
對虛擬卡雜湊和終端隨機數(shù)及虛擬卡隨機數(shù)經(jīng)過兩次哈希運算后得到摘要信息。
進一步的,所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息,包括:
客戶端響應于客戶端與電商平臺生成的訂單信息;
對虛擬卡雜湊和所述訂單信息經(jīng)過兩次哈希運算后得到摘要信息。
進一步的,基于第一客戶端私鑰和存儲的第二客戶端私鑰合成客戶端私鑰,通過所述客戶端私鑰對所述虛擬卡交易數(shù)據(jù)簽名后生成客戶端簽名,包括:
客戶端將接收到的第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰;
接收隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù);
通過所述隨機數(shù)計算橢圓曲線點;
基于所述橢圓曲線點和客戶端私鑰計算得到客戶端簽名。
進一步的,將所述客戶端簽名發(fā)送至移動應用平臺;以便所述移動應用平臺通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名,包括:
將所述客戶端簽名發(fā)送至移動應用平臺;移動應用平臺驗證所述客戶端簽名是否為該客戶端對應的客戶端簽名信息;驗證失敗,接收移動應用平臺返回的錯誤提示;
驗證通過;移動應用平臺獲取存儲的客戶端公鑰和存儲的摘要信息驗證所述客戶端簽名是否正確;驗證失敗,接收移動應用平臺返回的錯誤提示,驗證通過,移動應用平臺使用存儲的虛擬卡私鑰產(chǎn)生虛擬卡簽名。
進一步的,由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名,包括:
移動應用平臺將虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名以及虛擬卡簽名驗證請求發(fā)送至認證端;接收認證端返回的基于客戶端的虛擬卡公鑰證書對所述虛擬卡簽名的驗證結(jié)果;驗證失敗,接收移動應用平臺返回的錯誤提示;驗證通過,所述虛擬卡交易請求被通過。
本發(fā)明另一方面還提供了一種用于進行虛擬卡交易的裝置,該裝置為移動應用平臺,所述移動應用平臺存儲客戶端的第一客戶端私鑰、客戶端公鑰和客戶端的虛擬卡私鑰,客戶端存儲第二客戶端私鑰,認證端存儲客戶端的虛擬卡公鑰證書,所述移動應用平臺包括:
接收模塊,用于接收客戶端發(fā)送的私鑰獲取請求,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡交易數(shù)據(jù)計算的摘要信息;并向所述客戶端返回其第一客戶端私鑰;
響應模塊,用于響應于所述客戶端發(fā)送的基于第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰生成的客戶端簽名,通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。
進一步的,所述接收模塊,還用于保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的虛擬卡待簽數(shù)據(jù)計算的摘要信息;包括:
第一保存單元,用于保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)及虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息;和/或
第二保存單元,用于保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息。
進一步的,第一保存單元,包括:
第一保存子單元,用于在客戶端接收受理終端發(fā)送的終端隨機數(shù);同時生成虛擬卡隨機數(shù);對虛擬卡雜湊和終端隨機數(shù)及虛擬卡隨機數(shù)經(jīng)過兩次哈希運算后得到摘要信息;保存客戶端發(fā)送的私鑰獲取請求攜帶的所述摘要信息。
進一步的,第二保存單元,包括:
第二保存子單元,用于在客戶端響應于客戶端與電商平臺生成的訂單信息;對虛擬卡雜湊和所述訂單信息經(jīng)過兩次哈希運算后得到摘要信息;保存客戶端發(fā)送的私鑰獲取請求攜帶的所述摘要信息。
進一步的,所述響應模塊,包括:
合成單元,用于在客戶端將接收到的第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰;
響應單元,用于接收隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù);通過所述隨機數(shù)計算橢圓曲線點;基于所述橢圓曲線點和客戶端私鑰計算得到客戶端簽名;響應于所述客戶端發(fā)送的所述客戶端簽名。
進一步的,所述響應模塊;包括:
第一驗證單元,用于驗證所述客戶端簽名是否為該客戶端對應的客戶端簽名信息,驗證失敗,向客戶端返回錯誤提示;驗證通過;則觸發(fā)第二驗證單元;
第二驗證單元,用于獲取存儲的客戶端公鑰和存儲的摘要信息驗證所述客戶端簽名是否正確,驗證失敗,向客戶端返回錯誤提示,驗證通過,使用存儲的虛擬卡私鑰產(chǎn)生虛擬卡簽名。
進一步的,所述響應模塊,包括:
發(fā)送單元,用于將虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名以及虛擬卡簽名驗證請求發(fā)送至認證端;
接收單元,用于接收認證端返回的基于客戶端的虛擬卡公鑰證書對所述虛擬卡簽名的驗證結(jié)果,驗證失敗,向客戶端返回錯誤提示;驗證通過,通過所述虛擬卡交易請求。
本發(fā)明提供了一種用于進行虛擬卡交易的裝置,該裝置為客戶端,所述客戶端存儲第二客戶端私鑰,移動應用平臺存儲客戶端的第一客戶端私鑰、客戶端公鑰和客戶端的虛擬卡私鑰,認證端存儲客戶端的虛擬卡公鑰證書,所述客戶端包括:
客戶端發(fā)送模塊,用于響應于客戶端生成的虛擬卡交易數(shù)據(jù);基于所述虛擬卡交易數(shù)據(jù)向移動應用平臺發(fā)送私鑰獲取請求,所述私鑰獲取請求攜帶基于虛擬卡交易數(shù)據(jù)計算的摘要信息;
客戶端接收模塊,用于接收移動應用平臺發(fā)送的第一客戶端私鑰;
客戶端簽名模塊,用于基于第一客戶端私鑰和存儲的第二客戶端私鑰合成客戶端私鑰;通過所述客戶端私鑰對所述虛擬卡交易數(shù)據(jù)簽名后生成客戶端簽名,并將所述客戶端簽名發(fā)送至移動應用平臺;以便所述移動應用平臺通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。
進一步的,所述客戶端發(fā)送模塊,用于在所述私鑰獲取請求中攜帶基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的虛擬卡待簽數(shù)據(jù)計算的摘要信息,包括:
第一計算單元,用于基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)及虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息;和/或
第二計算單元,用于基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息。
進一步的,所述第一計算單元,包括:
第一計算子單元,用于在客戶端接收受理終端發(fā)送的終端隨機數(shù);同時生成虛擬卡隨機數(shù);對虛擬卡雜湊和終端隨機數(shù)及虛擬卡隨機數(shù)經(jīng)過兩次哈希運算后得到摘要信息。
進一步的,所述第二計算單元,包括:
第二計算子單元,用于在客戶端響應于客戶端與電商平臺生成的訂單信息;對虛擬卡雜湊和所述訂單信息經(jīng)過兩次哈希運算后得到摘要信息。
進一步的,所述客戶端簽名模塊,包括:
客戶端合成單元,用于將接收到的第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰;
客戶端簽名單元,用于接收隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù);通過所述隨機數(shù)計算橢圓曲線點;基于所述橢圓曲線點和客戶端私鑰計算得到客戶端簽名。
進一步的,所述客戶端簽名模塊,包括:
第一客戶端驗證單元,用于將所述客戶端簽名發(fā)送至移動應用平臺;移動應用平臺驗證所述客戶端簽名是否為該客戶端對應的客戶端簽名信息;驗證失敗,接收移動應用平臺返回的錯誤提示;驗證通過;觸發(fā)第二客戶端驗證單元;
第二客戶端驗證單元,用于在移動應用平臺獲取存儲的客戶端公鑰和存儲的摘要信息驗證所述客戶端簽名是否正確;驗證失敗,接收移動應用平臺返回的錯誤提示,驗證通過,移動應用平臺使用存儲的虛擬卡私鑰產(chǎn)生虛擬卡簽名。
進一步的,所述客戶端簽名模塊,包括:
客戶端接收單元,用于在移動應用平臺將虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名以及虛擬卡簽名驗證請求發(fā)送至認證端;移動應用平臺接收認證端返回的基于客戶端的虛擬卡公鑰證書對所述虛擬卡簽名的驗證結(jié)果;驗證失敗,接收移動應用平臺返回的錯誤提示;驗證通過,所述虛擬卡交易請求被通過。
本發(fā)明提供了一種用于進行虛擬卡交易的方法和裝置,采用雙密鑰體系結(jié)構(gòu)用于認證移動客戶端及產(chǎn)生虛擬卡交易簽名憑證,其中,客戶端私鑰用于產(chǎn)生客戶端簽名,私鑰分為兩段,分離保存在移動應用平臺和客戶端中;虛擬卡私鑰完整保存在移動應用平臺中,用于產(chǎn)生虛擬卡簽名;認證端保存虛擬卡公鑰證書,用于驗證虛擬卡簽名,認證端包括但不限于發(fā)卡機構(gòu)或與客戶端進行交易的電商平臺。本發(fā)明的技術(shù)方案中,客戶端私鑰采用了分段機制,分離保存在客戶端和移動應用平臺中,由于移動應用平臺和客戶端分別各自保存了一部分客戶端私鑰,提高了針對私鑰保護的安全性;本發(fā)明設計了雙密鑰體系結(jié)構(gòu),只有在客戶端被認證通過的條件下,才能繼續(xù)使用所托管虛擬卡私鑰;被認證客戶端與產(chǎn)生虛擬卡交易憑證在一個工作流程中緊湊整合,有效的利用了摘要信息,無多余、重復的數(shù)據(jù)交互;由于摘要是經(jīng)兩次哈希的運算結(jié)果,不能逆向恢復待簽數(shù)據(jù)及簽名者雜湊;本發(fā)明直接使用虛擬卡雜湊(而非客戶端雜湊)計算摘要信息,從而避免了虛擬卡交易數(shù)據(jù)的交互,為驗證提供無縫的技術(shù)支撐。本發(fā)明的工作流程既起到認證客戶端的效果,同時又在移動應用平臺不掌握用戶虛擬卡交易數(shù)據(jù)的條件下,利用摘要信息計算得出交易數(shù)據(jù)的簽名,從而保障了用戶的隱私;由于客戶端簽名的計算需要用到客戶端私有保存的第二客戶端私鑰,仿冒的客戶端無法通過移動應用平臺的驗證,因而不能越權(quán)使用虛擬卡私鑰;摘要信息作為交互流程中第一個發(fā)送的參數(shù),有效的約束了簽名生成的上下文關(guān)系,從而可有效抵御會話劫持、數(shù)據(jù)重放等攻擊。
附圖說明
圖1為根據(jù)本發(fā)明的一種用于進行虛擬卡交易的方法的實施例一的流程圖;
圖2為根據(jù)本發(fā)明的一種用于進行虛擬卡交易的方法的實施例二的結(jié)構(gòu)框圖;
圖3為根據(jù)本發(fā)明的一種用于進行虛擬卡交易的裝置的實施例三的結(jié)構(gòu)框圖。
圖4為根據(jù)本發(fā)明的一種用于進行虛擬卡交易的裝置的實施例四的結(jié)構(gòu)框圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本發(fā)明保護的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設備固有的其它步驟或單元。
實施例一
本實施例中采用雙密鑰體系結(jié)構(gòu)用于認證移動客戶端及產(chǎn)生虛擬卡交易簽名憑證。本實施例中的雙密鑰體系結(jié)構(gòu),只有在客戶端被認證通過的條件下,才能繼續(xù)使用所托管虛擬卡私鑰。其中,客戶端私鑰用于產(chǎn)生客戶端簽名,私鑰分為兩段,分離保存在移動應用平臺和客戶端中,由于移動應用平臺和客戶端分別各自保存了一部分客戶端私鑰,提高了針對私鑰保護的安全性;虛擬卡私鑰完整保存在移動應用平臺中,用于產(chǎn)生虛擬卡簽名;本實施例中的認證端優(yōu)選為發(fā)卡機構(gòu)或電商平臺,當然,認證端不僅僅局限于此,凡是能實現(xiàn)安全保存虛擬卡公鑰證書,可以用于驗證虛擬卡簽名的功能的終端都可以。下面結(jié)合附圖對本發(fā)明的技術(shù)方案做詳細說明。
參照圖1,圖1示出了本發(fā)明提供的一種用于進行虛擬卡交易的方法的一實施例的流程圖。本實施例的方法應用于移動應用平臺中,該方法包括:步驟s110至步驟s120。
在步驟s110中,接收客戶端發(fā)送的私鑰獲取請求,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡交易數(shù)據(jù)計算的摘要信息;并向所述客戶端返回其第一客戶端私鑰。
一應用實例,以電商虛擬卡線上消費交易為例,由于客戶端簽名的計算需要用到客戶端私有保存的第二部分私鑰,仿冒的客戶端無法通過移動應用平臺的驗證,因而不能越權(quán)使用虛擬卡私鑰;具體的,用戶通過移動應用客戶端在電商平臺購買產(chǎn)品,生成訂單,需要進行身份認證,移動應用客戶端對訂單計算摘要,摘要的計算優(yōu)選為根據(jù)sm2數(shù)字簽名的生成算法進行計算,包括了兩次哈希運算得到摘要信息,由于摘要是經(jīng)兩次哈希的運算結(jié)果,不能逆向恢復待簽數(shù)據(jù)及簽名者雜湊;客戶端只保存最后的雜湊結(jié)果(雜湊運算后的32字節(jié)),參與雜湊生成的參數(shù)(例如虛擬卡id)不需要單獨保存;由于雜湊運算的不可逆性,不能通過雜湊逆向恢復虛擬卡id等參數(shù);且對于發(fā)卡行(夠唯一識別虛擬卡id),如果根據(jù)虛擬卡的id及其公鑰計算的雜湊值不是虛擬卡所對應的雜湊值,驗證不能通過。本發(fā)明直接使用虛擬卡雜湊(而非客戶端雜湊)計算摘要,從而避免了交易數(shù)據(jù)的交互,為發(fā)卡行標準化的驗證提供無縫的技術(shù)支撐。客戶端向移動應用平臺發(fā)送私鑰獲取請求和摘要信息,移動應用平臺保存摘要信息,并向所述客戶端返回其第一客戶端私鑰,摘要作為交互流程中第一個發(fā)送的參數(shù),用來驗證后續(xù)簽名的真實性,有效的約束了簽名生成的上下文關(guān)系,從而可有效抵御會話劫持、數(shù)據(jù)重放等攻擊。
在步驟s120中,響應于所述客戶端發(fā)送的基于第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰生成的客戶端簽名,通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。
本實施例中,客戶端將接收到的第一客戶端私鑰與本地保存的第二客戶端私鑰合成客戶端私鑰,合成方法優(yōu)選為通過dc=dc1||dc2進行計算,其中,dc為客戶端私鑰,dc1為第一客戶端私鑰,dc2為第二客戶端私鑰。通過合成的客戶端私鑰對虛擬卡交易數(shù)據(jù)中的待簽數(shù)據(jù),例如訂單數(shù)據(jù)進行簽名,并將生成的客戶端簽名發(fā)送至移動應用平臺中,移動應用平臺通過摘要信息和該客戶端公鑰驗證所述客戶端簽名,若本次交易數(shù)據(jù)被篡改,與發(fā)送摘要信息時的交易數(shù)據(jù)不一致,驗證失敗,并將錯誤提示數(shù)據(jù)發(fā)送至客戶端中,摘要信息有效抵御會話劫持、數(shù)據(jù)重放等攻擊。驗證通過后,客戶端或移動應用平臺向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。移動應用平臺不強制與認證方相連,簽名結(jié)果可直接發(fā)送給認證方,也可間接發(fā)送給認證方(由客戶端中轉(zhuǎn)),兼容現(xiàn)有技術(shù)體系標準。本實施例中,認證客戶端與產(chǎn)生虛擬卡交易憑證在一個工作流程中緊湊整合,有效的利用了摘要,無多余、重復的數(shù)據(jù)交互,本實施例的工作流程既起到認證客戶端的效果,同時又在移動應用平臺不掌握用戶交易數(shù)據(jù)的條件下,利用摘要計算得出交易數(shù)據(jù)的簽名,從而保障了用戶的隱私。
進一步的,本發(fā)明實施例中,移動應用平臺在保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡交易數(shù)據(jù)計算的摘要信息的具體步驟包括:保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的虛擬卡待簽數(shù)據(jù)計算的摘要信息;
保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)及虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息;和/或
保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息。
優(yōu)選的,根據(jù)sm2數(shù)字簽名的生成算法,基于虛擬卡雜湊值通過兩次哈希算法,計算得到摘要信息e,包括:
c1:置
c2:計算
其中,m為虛擬卡交易數(shù)據(jù)中的待簽名的消息,za為虛擬卡雜湊;za||m為za與m的拼接;且za為根據(jù)用戶a的虛擬卡ida及其公鑰計算的虛擬卡雜湊值,za=h256(entla||ida||a||b||xg||yg||xa||ya);hv、h256為哈希算法,其中,entla為用戶a的虛擬卡ida轉(zhuǎn)換成的字節(jié),優(yōu)選為兩個字節(jié),a,b,g為橢圓曲線方程參數(shù);xg,yg,為a,b的坐標;xa,ya為公鑰pa的坐標。虛擬卡的ida,是認證方能夠唯一識別虛擬卡的標記,沒有強制限制,例如卡號、卡序列號、支付標記等,也可以使用默認值??蛻舳酥槐4孀詈蟮膠a結(jié)果(雜湊運算后的32字節(jié)),參與za生成的參數(shù)(例如ida)不需要單獨保存,由于雜湊運算的不可逆性,不能通過za逆向恢復簽名ida等參數(shù)。
本發(fā)明實施例直接使用虛擬卡雜湊(而非客戶端雜湊)計算摘要,從而避免了交易數(shù)據(jù)的交互,為發(fā)卡行標準化的驗證提供無縫的技術(shù)支撐。
進一步的,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)和虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息,包括:
客戶端接收受理終端發(fā)送的終端隨機數(shù);同時生成虛擬卡隨機數(shù);
對虛擬卡雜湊和終端隨機數(shù)及虛擬卡隨機數(shù)經(jīng)過兩次哈希運算后得到摘要信息;
保存客戶端發(fā)送的私鑰獲取請求攜帶的所述摘要信息。
其中,終端隨機數(shù)是為了構(gòu)造動態(tài)數(shù)據(jù),動態(tài)數(shù)據(jù)中的隨機數(shù)一個由受理終端(可信)產(chǎn)生,一個由移動客戶端(非可信)產(chǎn)生,由受理終端(可信)強制保證了數(shù)據(jù)的動態(tài)性,防止重放等欺騙性攻擊。
進一步的,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息,包括:
客戶端響應于客戶端與電商平臺生成的訂單信息;
對虛擬卡雜湊和所述訂單信息經(jīng)過兩次哈希運算后得到摘要信息;
保存客戶端發(fā)送的私鑰獲取請求攜帶的所述摘要信息。
對訂單數(shù)據(jù)計算摘要不需要特別產(chǎn)生隨機數(shù),一般訂單數(shù)據(jù)包括的流水號包括隨機成分,例如流水號=日期+時間+6位隨機數(shù)。簽名過程會再產(chǎn)生過程隨機數(shù),用于確保對于相同的待簽數(shù)據(jù)和za,每次輸出的簽名結(jié)果都不同,可使用隨機數(shù)發(fā)生器產(chǎn)生隨機數(shù)k∈[1,n-1]。
進一步的,所述響應于所述客戶端發(fā)送的基于第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰生成的客戶端簽名,包括:
c3:客戶端將接收到的第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰dc=dc1||dc2;
c4:接收隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù)k∈[1,n-1];
c5:通過所述隨機數(shù)計算橢圓曲線點(x1,y1)=[k]g;g為橢圓曲線的基點;
c6:基于所述橢圓曲線點和客戶端私鑰計算得到客戶端簽名;
具體的,計算r=(e+x1)modn,若r=0或r+k=n則返回c4;
計算s=((1+dc)-1·(k–r·dc))modn,若s=0則返回c4;
將消息m的簽名(r,s)作為客戶端簽名發(fā)送給移動應用平臺;
移動應用平臺響應于所述客戶端發(fā)送的所述客戶端簽名。
進一步的,所述通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;包括:
驗證所述客戶端簽名是否為該客戶端對應的客戶端簽名信息,驗證失敗,向客戶端返回錯誤提示;驗證通過;則
獲取存儲的客戶端公鑰和存儲的摘要信息驗證所述客戶端簽名是否正確,驗證失敗,向客戶端返回錯誤提示,驗證通過,使用存儲的虛擬卡私鑰對摘要信息進行簽名產(chǎn)生虛擬卡簽名。
具體的,s2:計算t=(r+s)modn,若t=0,則向客戶端返回錯誤提示,否則繼續(xù)以下步驟;
s3:計算橢圓曲線點(x1’,y1’)=[s]g+[t]pc;pc為請求客戶端的公鑰;
s4:讀取移動應用平臺所保存的摘要e,計算r=(e+x1’)modn,檢驗r=r是否成立,若成立則繼續(xù)以下步驟;否則向客戶端返回錯誤提示;
s5:用隨機數(shù)發(fā)生器產(chǎn)生隨機數(shù)k∈[1,n-1];
s6:計算橢圓曲線點(x1,y1)=[k]g;
s7:計算r=(e+x1)modn,若r=0或r+k=n則返回s5;
s8:計算s=((1+da)-1·(k–r·da))modn,若s=0則返回s5;
s9:簽名(r,s)即為虛擬卡對消息m的簽名。虛擬卡簽名可通過任意通道直接或間接的發(fā)送至認證端驗證;
進一步的,通過客戶端或移動應用平臺所述向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名,包括:
將虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名以及虛擬卡簽名驗證請求發(fā)送至認證端;認證端接收到虛擬卡簽名后,采用標準數(shù)字簽名驗證算法用于驗證虛擬卡簽名(交易簽名憑證)。
接收認證端返回的基于客戶端的虛擬卡公鑰證書對所述虛擬卡簽名的驗證結(jié)果,驗證失敗,向客戶端返回錯誤提示;驗證通過,通過所述虛擬卡交易請求。
移動應用平臺不強制與認證方連接,簽名結(jié)果可直接發(fā)送給認證方,也可間接發(fā)送給認證方(由客戶端中轉(zhuǎn))??芍С志€下交易,如受理終端(非接pos機),兼容現(xiàn)有技術(shù)體系標準。
一應用實例,以金融虛擬卡線下認證為例:用戶使用虛擬卡進行消費,觸發(fā)身份認證,受理終端發(fā)送終端隨機數(shù),與客戶端生成的虛擬卡隨機數(shù)計算摘要,摘要的計算優(yōu)選為根據(jù)sm2數(shù)字簽名的生成算法進行計算,包括了兩次哈希運算得到摘要信息,由于摘要是經(jīng)兩次哈希的運算結(jié)果,不能逆向恢復待簽數(shù)據(jù)及簽名者雜湊;且對于發(fā)卡行,如果根據(jù)簽名者的虛擬卡id及其公鑰計算的雜湊值不是虛擬卡所對應的雜湊值,驗證不能通過。本發(fā)明直接使用虛擬卡雜湊(而非客戶端雜湊)計算摘要,從而避免了交易數(shù)據(jù)的交互,為發(fā)卡行標準化的驗證提供無縫的技術(shù)支撐??蛻舳讼蛞苿討闷脚_發(fā)送私鑰獲取請求和摘要信息,移動應用平臺保存摘要信息,并向所述客戶端返回其第一客戶端私鑰,摘要作為交互流程中第一個發(fā)送的參數(shù),用來驗證后續(xù)簽名的真實性,有效的約束了簽名生成的上下文關(guān)系,從而可有效抵御會話劫持、數(shù)據(jù)重放等攻擊??蛻舳藢⒔邮盏降牡谝豢蛻舳怂借€與本地保存的第二客戶端私鑰合成客戶端私鑰,合成方法優(yōu)選為通過dc=dc1||dc2進行計算,其中,dc為客戶端私鑰,dc1為第一客戶端私鑰,dc2為第二客戶端私鑰。通過合成的客戶端私鑰對虛擬卡交易數(shù)據(jù)進行簽名,并將生成的客戶端簽名發(fā)送至移動應用平臺中,移動應用平臺通過摘要信息和該客戶端公鑰驗證所述客戶端簽名,若本次交易數(shù)據(jù)被篡改,與發(fā)送摘要信息時的交易數(shù)據(jù)不一致,具體包括但不限于驗證za不是用戶a對應的雜湊值,驗證失敗,并將錯誤提示數(shù)據(jù)發(fā)送至客戶端中,摘要信息有效抵御會話劫持、數(shù)據(jù)重放等攻擊。驗證通過后,向發(fā)卡行發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。本實施例中,認證客戶端與產(chǎn)生虛擬卡交易憑證在一個工作流程中緊湊整合,有效的利用了摘要,無多余、重復的數(shù)據(jù)交互,本實施例的工作流程既起到認證客戶端的效果,同時又在移動應用平臺不掌握用戶交易數(shù)據(jù)的條件下,利用摘要計算得出交易數(shù)據(jù)的簽名,從而保障了用戶的隱私。
本發(fā)明實施例一通過接收客戶端發(fā)送的私鑰獲取請求,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡交易數(shù)據(jù)計算的摘要信息;并向所述客戶端返回其第一客戶端私鑰;響應于所述客戶端發(fā)送的基于第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰生成的客戶端簽名,通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,可通過移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名的技術(shù)方案,確保了移動應用的實體安全,并在合法的使用云端se,生成了可靠的虛擬卡交易簽名憑證,同時具備兼容性。本發(fā)明實施例一解決了如何在強認證的前提下,由受信客戶端使用云端se,產(chǎn)生可靠的虛擬卡sm2簽名憑證的問題。且由于移動應用平臺和客戶端分別各自保存了一部分客戶端私鑰,提高了針對私鑰保護的安全性;本發(fā)明實施例的工作流程既起到認證客戶端的效果,同時又在移動應用平臺不掌握用戶交易數(shù)據(jù)(消息為m)的條件下,利用摘要e計算得出交易數(shù)據(jù)的簽名,從而保障了用戶的隱私;由于客戶端簽名的計算需要用到客戶端私有保存的第二客戶端私鑰,仿冒的客戶端無法通過移動應用平臺的驗證,因而不能越權(quán)使用虛擬卡私鑰;摘要e作為交互流程中第一個發(fā)送的參數(shù),有效的約束了簽名生成的上下文關(guān)系,從而可有效抵御會話劫持、數(shù)據(jù)重放等攻擊。
其中,消息為任意有限長度的比特串。
實施例二
參照圖2,圖2示出了本發(fā)明提供的一種用于進行虛擬卡交易的方法的另一實施例的流程圖。本實施例的方法應用于客戶端中,該方法包括:步驟s210至步驟s230。
其中,所述客戶端存儲第二客戶端私鑰,移動應用平臺存儲客戶端的第一客戶端私鑰、客戶端公鑰和客戶端的虛擬卡私鑰,認證端存儲客戶端的虛擬卡公鑰證書。
在步驟s210中,響應于客戶端生成的虛擬卡交易數(shù)據(jù);基于所述虛擬卡交易數(shù)據(jù)向移動應用平臺發(fā)送私鑰獲取請求,所述私鑰獲取請求攜帶基于虛擬卡交易數(shù)據(jù)計算的摘要信息。
在步驟s220中,接收移動應用平臺發(fā)送的第一客戶端私鑰。
在步驟s230中,基于第一客戶端私鑰和存儲的第二客戶端私鑰合成客戶端私鑰;通過所述客戶端私鑰對所述虛擬卡交易數(shù)據(jù)簽名后生成客戶端簽名,并將所述客戶端簽名發(fā)送至移動應用平臺;以便所述移動應用平臺通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。
本實施例二與實施例一的不同之處在于執(zhí)行主體為客戶端,且執(zhí)行步驟應用的優(yōu)選算法與實施例一相同,受說明書篇幅的限制,在此不再復述,具體的動作和算法以及實施例參考實施例一的描述。但是本領(lǐng)域技術(shù)人員應該知悉,本申請并不受所描述的算法以及動作順序限制,依據(jù)本發(fā)明,根據(jù)公開的技術(shù)特征、凡是具有所公開的功能,達到所描述的技術(shù)效果的方案都在本發(fā)明的保護范圍之內(nèi)。說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本申請所必須的。
進一步的,所述私鑰獲取請求攜帶基于虛擬卡交易數(shù)據(jù)計算的摘要信息,包括:私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的虛擬卡待簽數(shù)據(jù)計算的摘要信息,包括:
所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)及虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息;和/或
所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息。
進一步的,所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)和虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息,包括:
客戶端接收受理終端發(fā)送的終端隨機數(shù);同時生成虛擬卡隨機數(shù);
對虛擬卡雜湊和終端隨機數(shù)及虛擬卡隨機數(shù)經(jīng)過兩次哈希運算后得到摘要信息。
進一步的,所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息,包括:
客戶端響應于客戶端與電商平臺生成的訂單信息;
對虛擬卡雜湊和所述訂單信息經(jīng)過兩次哈希運算后得到摘要信息。
進一步的,基于第一客戶端私鑰和存儲的第二客戶端私鑰合成客戶端私鑰,通過所述客戶端私鑰對所述虛擬卡交易數(shù)據(jù)簽名后生成客戶端簽名,包括:
客戶端將接收到的第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰;
接收隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù);
通過所述隨機數(shù)計算橢圓曲線點;
基于所述橢圓曲線點和客戶端私鑰計算得到客戶端簽名。
進一步的,將所述客戶端簽名發(fā)送至移動應用平臺;以便所述移動應用平臺通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名,包括:
將所述客戶端簽名發(fā)送至移動應用平臺;移動應用平臺驗證所述客戶端簽名是否為該客戶端對應的客戶端簽名信息;驗證失敗,接收移動應用平臺返回的錯誤提示;
驗證通過;移動應用平臺獲取存儲的客戶端公鑰和存儲的摘要信息驗證所述客戶端簽名是否正確;驗證失敗,接收移動應用平臺返回的錯誤提示,驗證通過,移動應用平臺使用存儲的虛擬卡私鑰產(chǎn)生虛擬卡簽名。
進一步的,向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名,包括:
移動應用平臺將虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名以及虛擬卡簽名驗證請求發(fā)送至認證端;接收認證端返回的基于客戶端的虛擬卡公鑰證書對所述虛擬卡簽名的驗證結(jié)果;驗證失敗,接收移動應用平臺返回的錯誤提示;驗證通過,所述虛擬卡交易請求被通過。
本發(fā)明實施例二通過響應于客戶端生成的虛擬卡交易數(shù)據(jù);基于所述虛擬卡交易數(shù)據(jù)向移動應用平臺發(fā)送私鑰獲取請求,所述私鑰獲取請求攜帶基于虛擬卡交易數(shù)據(jù)計算的摘要信息。接收移動應用平臺發(fā)送的第一客戶端私鑰。基于第一客戶端私鑰和存儲的第二客戶端私鑰合成客戶端私鑰;通過所述客戶端私鑰對所述虛擬卡交易數(shù)據(jù)簽名后生成客戶端簽名,并將所述客戶端簽名發(fā)送至移動應用平臺;以便所述移動應用平臺通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名的技術(shù)方案,確保了客戶端以及移動應用的實體安全,并在合法的使用云端se,生成了可靠的虛擬卡交易簽名憑證。解決了如何在強認證的前提下,由受信客戶端使用云端se,產(chǎn)生可靠的虛擬卡sm2簽名憑證的問題。且由于移動應用平臺和客戶端分別各自保存了一部分客戶端私鑰,提高了針對私鑰保護的安全性;本發(fā)明實施例的工作流程既起到認證客戶端的效果,同時又在移動應用平臺不掌握用戶交易數(shù)據(jù)(消息為m)的條件下,利用摘要e計算得出交易數(shù)據(jù)的簽名,從而保障了用戶的隱私;由于客戶端簽名的計算需要用到客戶端私有保存的第二客戶端私鑰,仿冒的客戶端無法通過移動應用平臺的驗證,因而不能越權(quán)使用虛擬卡私鑰;摘要e作為交互流程中第一個發(fā)送的參數(shù),有效的約束了簽名生成的上下文關(guān)系,從而可有效抵御會話劫持、數(shù)據(jù)重放等攻擊。
實施例三
參照圖3,圖3示出了本發(fā)明提供的一種用于進行虛擬卡交易的裝置300的實施例的結(jié)構(gòu)框圖,該裝置為移動應用平臺。
所述移動應用平臺存儲客戶端的第一客戶端私鑰、客戶端公鑰和客戶端的虛擬卡私鑰,客戶端存儲第二客戶端私鑰,認證端存儲客戶端的虛擬卡公鑰證書,其特征在于,所述移動應用平臺包括:
接收模塊31,用于接收客戶端發(fā)送的私鑰獲取請求,保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡交易數(shù)據(jù)計算的摘要信息;并向所述客戶端返回其第一客戶端私鑰。
響應模塊32,用于響應于所述客戶端發(fā)送的基于第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰生成的客戶端簽名,通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。
進一步的,所述接收模塊,還用于保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的虛擬卡待簽數(shù)據(jù)計算的摘要信息:包括:
第一保存單元,用于保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)及虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息;和/或
第二保存單元,用于保存所述私鑰獲取請求攜帶的客戶端基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息。
第一保存單元,包括:
第一保存子單元,用于在客戶端接收受理終端發(fā)送的終端隨機數(shù);同時生成虛擬卡隨機數(shù);對虛擬卡雜湊和終端隨機數(shù)及虛擬卡隨機數(shù)經(jīng)過兩次哈希運算后得到摘要信息;保存客戶端發(fā)送的私鑰獲取請求攜帶的所述摘要信息。
第二保存單元,包括:
第二保存子單元,用于在客戶端響應于客戶端與電商平臺生成的訂單信息;對虛擬卡雜湊和所述訂單信息經(jīng)過兩次哈希運算后得到摘要信息;保存客戶端發(fā)送的私鑰獲取請求攜帶的所述摘要信息。
所述響應模塊,包括:
合成單元,用于在客戶端將接收到的第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰;
響應單元,用于接收隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù);通過所述隨機數(shù)計算橢圓曲線點;基于所述橢圓曲線點和客戶端私鑰計算得到客戶端簽名;響應于所述客戶端發(fā)送的所述客戶端簽名。
所述響應模塊;包括:
第一驗證單元,用于驗證所述客戶端簽名是否為該客戶端對應的客戶端簽名信息,驗證失敗,向客戶端返回錯誤提示;驗證通過;則觸發(fā)第二驗證單元;
第二驗證單元,用于獲取存儲的客戶端公鑰和存儲的摘要信息驗證所述客戶端簽名是否正確,驗證失敗,向客戶端返回錯誤提示,驗證通過,使用存儲的虛擬卡私鑰產(chǎn)生虛擬卡簽名。
所述響應模塊,包括:
發(fā)送單元,用于將虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名以及虛擬卡簽名驗證請求發(fā)送至認證端;
接收單元,用于接收認證端返回的基于客戶端的虛擬卡公鑰證書對所述虛擬卡簽名的驗證結(jié)果,驗證失敗,向客戶端返回錯誤提示;驗證通過,通過所述虛擬卡交易請求。
具體實現(xiàn)的功能和處理方式參見方法實施例一描述的具體步驟。
由于本實施例三的裝置所實現(xiàn)的處理及功能基本相應于前述圖1所示的方法的實施例、原理和實例,故本實施例的描述中未詳盡之處,可以參見前述實施例中的相關(guān)說明,在此不做贅述。
本實施例三提供了一種用于進行虛擬卡交易的裝置,該裝置為移動應用平臺,采用雙密鑰體系結(jié)構(gòu)用于認證移動客戶端及產(chǎn)生虛擬卡交易簽名憑證,其中,客戶端私鑰用于產(chǎn)生客戶端簽名,私鑰分為兩段,分離保存在移動應用平臺和客戶端中;虛擬卡私鑰完整保存在移動應用平臺中,用于產(chǎn)生虛擬卡簽名;認證端保存虛擬卡公鑰證書,用于驗證虛擬卡簽名,認證端包括但不限于發(fā)卡機構(gòu)或與客戶端進行交易的電商平臺。本發(fā)明的技術(shù)方案中,客戶端私鑰采用了分段機制,分離保存在客戶端和移動應用平臺中,由于移動應用平臺和客戶端分別各自保存了一部分客戶端私鑰,提高了針對私鑰保護的安全性;本發(fā)明設計了雙密鑰體系結(jié)構(gòu),只有在客戶端被認證通過的條件下,才能繼續(xù)使用所托管虛擬卡私鑰;被認證客戶端與產(chǎn)生虛擬卡交易憑證在一個工作流程中緊湊整合,有效的利用了摘要信息,無多余、重復的數(shù)據(jù)交互;由于摘要是經(jīng)兩次哈希的運算結(jié)果,不能逆向恢復待簽數(shù)據(jù)及簽名者雜湊;本發(fā)明直接使用虛擬卡雜湊(而非客戶端雜湊)計算摘要信息,從而避免了虛擬卡交易數(shù)據(jù)的交互,為驗證提供無縫的技術(shù)支撐。本發(fā)明的工作流程既起到認證客戶端的效果,同時又在移動應用平臺不掌握用戶虛擬卡交易數(shù)據(jù)的條件下,利用摘要信息計算得出交易數(shù)據(jù)的簽名,從而保障了用戶的隱私;由于客戶端簽名的計算需要用到客戶端私有保存的第二客戶端私鑰,仿冒的客戶端無法通過移動應用平臺的驗證,因而不能越權(quán)使用虛擬卡私鑰;摘要信息作為交互流程中第一個發(fā)送的參數(shù),有效的約束了簽名生成的上下文關(guān)系,從而可有效抵御會話劫持、數(shù)據(jù)重放等攻擊。
實施例四
參照圖4,圖4示出了本發(fā)明提供的一種用于進行虛擬卡交易的裝置400的實施例的結(jié)構(gòu)框圖,該裝置為客戶端。
所述客戶端存儲第二客戶端私鑰,移動應用平臺存儲客戶端的第一客戶端私鑰、客戶端公鑰和客戶端的虛擬卡私鑰,認證端存儲客戶端的虛擬卡公鑰證書,其特征在于,所述客戶端包括:
客戶端發(fā)送模塊41,用于響應于客戶端生成的虛擬卡交易數(shù)據(jù);基于所述虛擬卡交易數(shù)據(jù)向移動應用平臺發(fā)送私鑰獲取請求,所述私鑰獲取請求攜帶基于虛擬卡交易數(shù)據(jù)計算的摘要信息;
客戶端接收模塊42,用于接收移動應用平臺發(fā)送的第一客戶端私鑰;
客戶端簽名模塊43,用于基于第一客戶端私鑰和存儲的第二客戶端私鑰合成客戶端私鑰;通過所述客戶端私鑰對所述虛擬卡交易數(shù)據(jù)簽名后生成客戶端簽名,并將所述客戶端簽名發(fā)送至移動應用平臺;以便所述移動應用平臺通過所述摘要信息和該客戶端公鑰驗證所述客戶端簽名;驗證通過后,由移動應用平臺或客戶端向認證端發(fā)送并請求其驗證基于虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名。
進一步的,所述客戶端發(fā)送模塊,用于在所述私鑰獲取請求中攜帶基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的虛擬卡待簽數(shù)據(jù)計算的摘要信息,包括:
第一計算單元,用于基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的終端隨機數(shù)及虛擬卡隨機數(shù)組成的虛擬卡待簽數(shù)據(jù)計算的摘要信息;和/或
第二計算單元,用于基于虛擬卡雜湊和虛擬卡交易數(shù)據(jù)中的客戶端與電商平臺生成的訂單信息計算的摘要信息。
所述第一計算單元,包括:
第一計算子單元,用于在客戶端接收受理終端發(fā)送的終端隨機數(shù);同時生成虛擬卡隨機數(shù);對虛擬卡雜湊和終端隨機數(shù)及虛擬卡隨機數(shù)經(jīng)過兩次哈希運算后得到摘要信息。
所述第二計算單元,包括:
第二計算子單元,用于在客戶端響應于客戶端與電商平臺生成的訂單信息;對虛擬卡雜湊和所述訂單信息經(jīng)過兩次哈希運算后得到摘要信息。
所述客戶端簽名模塊,包括:
客戶端合成單元,用于將接收到的第一客戶端私鑰和客戶端存儲的第二客戶端私鑰合成客戶端私鑰;
客戶端簽名單元,用于接收隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù);通過所述隨機數(shù)計算橢圓曲線點;基于所述橢圓曲線點和客戶端私鑰計算得到客戶端簽名。
所述客戶端簽名模塊,包括:
第一客戶端驗證單元,用于將所述客戶端簽名發(fā)送至移動應用平臺;移動應用平臺驗證所述客戶端簽名是否為該客戶端對應的客戶端簽名信息;驗證失敗,接收移動應用平臺返回的錯誤提示;驗證通過;觸發(fā)第二客戶端驗證單元;
第二客戶端驗證單元,用于在移動應用平臺獲取存儲的客戶端公鑰和存儲的摘要信息驗證所述客戶端簽名是否正確;驗證失敗,接收移動應用平臺返回的錯誤提示,驗證通過,移動應用平臺使用存儲的虛擬卡私鑰產(chǎn)生虛擬卡簽名。
所述客戶端簽名模塊,包括:
客戶端接收單元,用于在移動應用平臺將虛擬卡私鑰對所述摘要信息簽名后產(chǎn)生的虛擬卡簽名以及虛擬卡簽名驗證請求發(fā)送至認證端;移動應用平臺接收認證端返回的基于客戶端的虛擬卡公鑰證書對所述虛擬卡簽名的驗證結(jié)果;驗證失敗,接收移動應用平臺返回的錯誤提示;驗證通過,所述虛擬卡交易請求被通過。
具體實現(xiàn)的功能和處理方式參見方法實施例二描述的具體步驟。
由于本實施例四的裝置所實現(xiàn)的處理及功能基本相應于前述圖2所示的方法的實施例、原理和實例,故本實施例的描述中未詳盡之處,可以參見前述實施例中的相關(guān)說明,在此不做贅述。
本實施例四提供了一種用于進行虛擬卡交易的裝置,該裝置為客戶端,采用雙密鑰體系結(jié)構(gòu)用于認證移動客戶端及產(chǎn)生虛擬卡交易簽名憑證,其中,客戶端私鑰用于產(chǎn)生客戶端簽名,私鑰分為兩段,分離保存在移動應用平臺和客戶端中;虛擬卡私鑰完整保存在移動應用平臺中,用于產(chǎn)生虛擬卡簽名;認證端保存虛擬卡公鑰證書,用于驗證虛擬卡簽名,認證端包括但不限于發(fā)卡機構(gòu)或與客戶端進行交易的電商平臺。本發(fā)明的技術(shù)方案中,客戶端私鑰采用了分段機制,分離保存在客戶端和移動應用平臺中,由于移動應用平臺和客戶端分別各自保存了一部分客戶端私鑰,提高了針對私鑰保護的安全性;本發(fā)明設計了雙密鑰體系結(jié)構(gòu),只有在客戶端被認證通過的條件下,才能繼續(xù)使用所托管虛擬卡私鑰;被認證客戶端與產(chǎn)生虛擬卡交易憑證在一個工作流程中緊湊整合,有效的利用了摘要信息,無多余、重復的數(shù)據(jù)交互;由于摘要是經(jīng)兩次哈希的運算結(jié)果,不能逆向恢復待簽數(shù)據(jù)及簽名者雜湊;本發(fā)明直接使用虛擬卡雜湊(而非客戶端雜湊)計算摘要信息,從而避免了虛擬卡交易數(shù)據(jù)的交互,為驗證提供無縫的技術(shù)支撐。本發(fā)明的工作流程既起到認證客戶端的效果,同時又在移動應用平臺不掌握用戶虛擬卡交易數(shù)據(jù)的條件下,利用摘要信息計算得出交易數(shù)據(jù)的簽名,從而保障了用戶的隱私;由于客戶端簽名的計算需要用到客戶端私有保存的第二客戶端私鑰,仿冒的客戶端無法通過移動應用平臺的驗證,因而不能越權(quán)使用虛擬卡私鑰;摘要信息作為交互流程中第一個發(fā)送的參數(shù),有效的約束了簽名生成的上下文關(guān)系,從而可有效抵御會話劫持、數(shù)據(jù)重放等攻擊。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置,可通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
需要指出,根據(jù)實施的需要,可將本申請中描述的各個步驟/部件拆分為更多步驟/部件,也可將兩個或多個步驟/部件或者步驟/部件的部分操作組合成新的步驟/部件,以實現(xiàn)本發(fā)明的目的。
上述根據(jù)本發(fā)明的方法可在硬件、固件中實現(xiàn),或者被實現(xiàn)為可存儲在記錄介質(zhì)(諸如cdrom、ram、軟盤、硬盤或磁光盤)中的軟件或計算機代碼,或者被實現(xiàn)通過網(wǎng)絡下載的原始存儲在遠程記錄介質(zhì)或非暫時機器可讀介質(zhì)中并將被存儲在本地記錄介質(zhì)中的計算機代碼,從而在此描述的方法可被存儲在使用通用計算機、專用處理器或者可編程或?qū)S糜布?諸如asic或fpga)的記錄介質(zhì)上的這樣的軟件處理。可以理解,計算機、處理器、微處理器控制器或可編程硬件包括可存儲或接收軟件或計算機代碼的存儲組件(例如,ram、rom、閃存等),當所述軟件或計算機代碼被計算機、處理器或硬件訪問且執(zhí)行時,實現(xiàn)在此描述的處理方法。此外,當通用計算機訪問用于實現(xiàn)在此示出的處理的代碼時,代碼的執(zhí)行將通用計算機轉(zhuǎn)換為用于執(zhí)行在此示出的處理的專用計算機。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應以所述權(quán)利要求的保護范圍為準。