本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種安全支付設(shè)備及方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)和電子商務(wù)的快速發(fā)展,網(wǎng)上在線交易越來(lái)越普遍,在線的快速支付方式越來(lái)越受到人們的親睞。交易金額不斷擴(kuò)大,網(wǎng)絡(luò)信息安全問(wèn)題日益凸顯,消費(fèi)者也越來(lái)越關(guān)注網(wǎng)上交易的安全問(wèn)題?,F(xiàn)有技術(shù)中普遍采用的快捷支付方式是用戶輸入交易密碼即可完成在線支付,或者交易密碼與手機(jī)短信認(rèn)證碼結(jié)合的方式完成在線支付,優(yōu)點(diǎn)是支付快速便捷,缺點(diǎn)是安全性低及需要用戶記憶密碼。
因此,發(fā)明一種既便捷又安全的支付方法是本發(fā)明要解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
為解決現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題,本發(fā)明提出了一種安全支付設(shè)備及方法。
本發(fā)明的技術(shù)方案涉及一種安全支付設(shè)備及方法,其中:
一種安全支付方法,包括以下步驟:
步驟S1、設(shè)備接收到客戶端下發(fā)的支付請(qǐng)求命令,解析所述支付請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)、密鑰句柄和交易文本,設(shè)備顯示所述交易文本,等待用戶確認(rèn)操作;
步驟S2、當(dāng)所述設(shè)備接收到用戶確認(rèn)操作時(shí),根據(jù)所述密鑰句柄獲得用戶應(yīng)用私鑰,獲取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值;所述設(shè)備根據(jù)所述第一參數(shù)、所述第二參數(shù)、所述當(dāng)前計(jì)數(shù)值和所述交易文本組成第三待簽名數(shù)據(jù),使用所述用戶應(yīng)用私鑰對(duì)所述第三待簽名數(shù)據(jù)進(jìn)行簽名得到第三簽名結(jié)果;所述設(shè)備根據(jù)所述當(dāng)前計(jì)數(shù)值和所述第三簽名結(jié)果組成支付請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給所述客戶端;
所述設(shè)備中保存有與所述密鑰句柄對(duì)應(yīng)的用戶應(yīng)用私鑰,或者是所述設(shè)備使用保存的解密密鑰對(duì)所述密鑰句柄解密得到用戶應(yīng)用私鑰。
優(yōu)選的,所述步驟S1之前還包括:當(dāng)所述設(shè)備接收到客戶端下發(fā)的注冊(cè)請(qǐng)求命令時(shí),執(zhí)行:
步驟a1:所述設(shè)備判斷是否接收到用戶確認(rèn)操作,是則執(zhí)行步驟a2,否則向客戶端返回錯(cuò)誤響應(yīng)碼,結(jié)束;
步驟a2:所述設(shè)備解析所述注冊(cè)請(qǐng)求命令獲取第一參數(shù)和第二參數(shù),生成用戶應(yīng)用公私鑰對(duì)及其對(duì)應(yīng)的密鑰句柄;
步驟a3:所述設(shè)備根據(jù)所述第一參數(shù)、所述第二參數(shù)、所述密鑰句柄和用戶應(yīng)用公鑰組成第一待簽名數(shù)據(jù),使用設(shè)備證書(shū)私鑰對(duì)所述第一待簽名數(shù)據(jù)進(jìn)行簽名得到第一簽名結(jié)果;
步驟a4:所述設(shè)備根據(jù)所述用戶應(yīng)用公鑰、所述密鑰句柄、設(shè)備證書(shū)和所述第一簽名結(jié)果組成注冊(cè)請(qǐng)求命令響應(yīng)數(shù)據(jù),向客戶端返回所述注冊(cè)請(qǐng)求命令響應(yīng)數(shù)據(jù)。
或者是優(yōu)選的,所述步驟S1之前還包括:當(dāng)所述設(shè)備接收到客戶端下發(fā)的注冊(cè)請(qǐng)求命令時(shí),執(zhí)行:
步驟a1:所述設(shè)備判斷是否接收到用戶確認(rèn)操作,是則執(zhí)行步驟a2,否則向客戶端返回錯(cuò)誤響應(yīng)碼,結(jié)束;
步驟a2:所述設(shè)備解析所述注冊(cè)請(qǐng)求命令獲取第一參數(shù)和第二參數(shù),生成用戶應(yīng)用公私鑰對(duì),根據(jù)用戶應(yīng)用私鑰和所述第二參數(shù)組成待加密數(shù)據(jù),使用保存的加密密鑰對(duì)所述待加密數(shù)據(jù)進(jìn)行加密得到密鑰句柄;
步驟a3:所述設(shè)備根據(jù)所述第一參數(shù)、所述第二參數(shù)、所述密鑰句柄和用戶應(yīng)用公鑰組成第一待簽名數(shù)據(jù),使用設(shè)備證書(shū)私鑰對(duì)所述第一待簽名數(shù)據(jù)進(jìn)行簽名得到第一簽名結(jié)果;
步驟a4:所述設(shè)備根據(jù)所述用戶應(yīng)用公鑰、所述密鑰句柄、設(shè)備證書(shū)和所述第一簽名結(jié)果組成注冊(cè)請(qǐng)求命令響應(yīng)數(shù)據(jù),向客戶端返回所述注冊(cè)請(qǐng)求命令響應(yīng)數(shù)據(jù)。
進(jìn)一步的,所述步驟S1之前還包括:當(dāng)所述設(shè)備接收到客戶端下發(fā)的認(rèn)證請(qǐng)求命令時(shí),執(zhí)行:
步驟b1:所述設(shè)備判斷是否接收到用戶確認(rèn)操作,是則執(zhí)行步驟b2,否則向客戶端返回錯(cuò)誤響應(yīng)碼,結(jié)束;
步驟b2:所述設(shè)備解析所述認(rèn)證請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)和密鑰句柄,根據(jù)所述密鑰句柄獲得用戶應(yīng)用私鑰;
步驟b3:所述設(shè)備獲取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,根據(jù)所述第一參數(shù)、第二參數(shù)、當(dāng)前計(jì)數(shù)值組成第二待簽名數(shù)據(jù),使用所述用戶應(yīng)用私鑰對(duì)所述第二待簽名數(shù)據(jù)進(jìn)行簽名得到第二簽名結(jié)果;
步驟b4:所述設(shè)備根據(jù)所述當(dāng)前計(jì)數(shù)值和所述第二簽名結(jié)果組成認(rèn)證請(qǐng)求命令響應(yīng)數(shù)據(jù),向客戶端返回所述認(rèn)證請(qǐng)求命令響應(yīng)數(shù)據(jù),并更新所述計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值。
優(yōu)選的,上述方法還包括:當(dāng)所述設(shè)備接收到客戶端下發(fā)的注銷請(qǐng)求命令時(shí),解析所述注銷請(qǐng)求命令獲取密鑰句柄,刪除設(shè)備中的與所述密鑰句柄對(duì)應(yīng)的用戶應(yīng)用公私鑰對(duì),向客戶端返回包含注銷結(jié)果的響應(yīng)碼。
當(dāng)所述設(shè)備接收到客戶端下發(fā)的設(shè)備配置命令時(shí),根據(jù)所述設(shè)備配置命令的數(shù)據(jù)域確定當(dāng)前簽名算法類型,并向客戶端返回表示命令執(zhí)行成功的響應(yīng)數(shù)據(jù)。
當(dāng)所述設(shè)備接收到客戶端下發(fā)的獲取設(shè)備信息命令時(shí),向所述客戶端返回包含硬件身份標(biāo)識(shí)碼的響應(yīng)數(shù)據(jù)。
其中,一種安全支付設(shè)備,包括命令接收模塊、第一解析模塊、顯示模塊、用戶交互模塊、第三簽名模塊、命令響應(yīng)模塊;
所述命令接收模塊,用于接收客戶端下發(fā)的支付請(qǐng)求命令;
所述第一解析模塊,用于當(dāng)所述命令接收模塊接收到所述支付請(qǐng)求命令時(shí),解析所述支付請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)、密鑰句柄和交易文本;
顯示模塊,用于顯示所述交易文本,并觸發(fā)用戶交互模塊;
所述用戶交互模塊,用于接收用戶確認(rèn)操作并觸發(fā)第三簽名模塊;
所述第三簽名模塊,用于根據(jù)所述第一解析模塊解析得到的所述密鑰句柄獲得用戶應(yīng)用私鑰,用于獲取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,根據(jù)所述當(dāng)前計(jì)數(shù)值、所述第一解析模塊解析得到的所述第一參數(shù)、所述第二參數(shù)和所述交易文本組成第三待簽名數(shù)據(jù),使用所述用戶應(yīng)用私鑰對(duì)所述第三待簽名數(shù)據(jù)進(jìn)行簽名得到第三簽名結(jié)果;
所述命令響應(yīng)模塊,用于根據(jù)所述第三簽名模塊獲得的所述當(dāng)前計(jì)數(shù)值和所述第三簽名結(jié)果組成支付請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給所述客戶端;
所述設(shè)備還包括存儲(chǔ)模塊,用于存儲(chǔ)設(shè)備生成的用戶應(yīng)用私鑰;或者所述存儲(chǔ)模塊,用于存儲(chǔ)加解密密鑰和解密模塊解密得到的用戶應(yīng)用私鑰;所述設(shè)備還包括解密模塊,所述解密模塊用于使用存儲(chǔ)模塊中保存的解密密鑰從所述第一解析模塊解析得到的所述密鑰句柄中解密獲得用戶應(yīng)用私鑰。
優(yōu)選的,所述命令接收模塊,還用于接收客戶端下發(fā)的注冊(cè)請(qǐng)求命令;相應(yīng)的:
所述設(shè)備還包括第一判斷模塊、第二解析模塊、第一簽名模塊;
所述第一判斷模塊,用于判斷所述用戶交互模塊是否接收到用戶確認(rèn)操作;
所述第二解析模塊,用于在所述第一判斷模塊判斷接收到用戶確認(rèn)操作時(shí),解析所述命令接收模塊接收到的所述注冊(cè)請(qǐng)求命令獲取第一參數(shù)和第二參數(shù),生成用戶應(yīng)用公私鑰對(duì)及其對(duì)應(yīng)的密鑰句柄;
所述存儲(chǔ)模塊,用于存儲(chǔ)所述用戶應(yīng)用公私鑰對(duì);
所述第一簽名模塊,用于根據(jù)所述第一參數(shù)、所述第二參數(shù)、所述密鑰句柄和用戶應(yīng)用公鑰組成第一待簽名數(shù)據(jù),使用設(shè)備證書(shū)私鑰對(duì)所述第一待簽名數(shù)據(jù)進(jìn)行簽名得到第一簽名結(jié)果,觸發(fā)所述命令響應(yīng)模塊;
所述命令響應(yīng)模塊,還用于收到所述第一簽名模塊的觸發(fā)時(shí)根據(jù)所述用戶應(yīng)用公鑰、所述密鑰句柄、設(shè)備證書(shū)和所述第一簽名結(jié)果組成注冊(cè)請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給所述客戶端,以及用于在所述第一判斷模塊判斷結(jié)果為否時(shí)向所述客戶端返回錯(cuò)誤響應(yīng)碼。
或者是優(yōu)選的,所述命令接收模塊,還用于接收客戶端下發(fā)的注冊(cè)請(qǐng)求命令;相應(yīng)的:
所述設(shè)備還包括第一判斷模塊、第二解析模塊、第一簽名模塊;
所述第一判斷模塊,用于判斷所述用戶交互模塊是否接收到用戶確認(rèn)操作;
所述第二解析模塊,用于在所述第一判斷模塊判斷接收到用戶確認(rèn)操作時(shí),解析所述命令接收模塊接收到的所述注冊(cè)請(qǐng)求命令獲取第一參數(shù)和第二參數(shù),生成用戶應(yīng)用公私鑰對(duì),根據(jù)用戶應(yīng)用私鑰和所述第二參數(shù)組成待加密數(shù)據(jù),使用保存的加密密鑰對(duì)所述待加密數(shù)據(jù)進(jìn)行加密得到密鑰句柄;
所述存儲(chǔ)模塊,用于存儲(chǔ)所述用戶應(yīng)用公私鑰對(duì);
所述第一簽名模塊,用于根據(jù)所述第一參數(shù)、所述第二參數(shù)、所述密鑰句柄和用戶應(yīng)用公鑰組成第一待簽名數(shù)據(jù),使用設(shè)備證書(shū)私鑰對(duì)所述第一待簽名數(shù)據(jù)進(jìn)行簽名得到第一簽名結(jié)果,觸發(fā)所述命令響應(yīng)模塊;
所述命令響應(yīng)模塊,還用于收到所述第一簽名模塊的觸發(fā)時(shí)根據(jù)所述用戶應(yīng)用公鑰、所述密鑰句柄、設(shè)備證書(shū)和所述第一簽名結(jié)果組成注冊(cè)請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給所述客戶端,以及用于在所述第一判斷模塊判斷結(jié)果為否時(shí)向所述客戶端返回錯(cuò)誤響應(yīng)碼。
進(jìn)一步的,上述命令接收模塊,還用于接收客戶端下發(fā)的認(rèn)證請(qǐng)求命令;相應(yīng)的:
所述設(shè)備還包括第一判斷模塊、第四解析模塊、第二簽名模塊和更新模塊;
所述第一判斷模塊,用于判斷所述用戶交互模塊是否接收到用戶確認(rèn)操作;
所述第四解析模塊,用于解析所述命令接收模塊接收到的所述認(rèn)證請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)和密鑰句柄;
所述第二簽名模塊,用于根據(jù)所述密鑰句柄獲得用戶應(yīng)用私鑰,獲取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,根據(jù)所述第一參數(shù)、第二參數(shù)、當(dāng)前計(jì)數(shù)值組成第二待簽名數(shù)據(jù),使用所述用戶應(yīng)用私鑰對(duì)所述第二待簽名數(shù)據(jù)進(jìn)行簽名得到第二簽名結(jié)果,觸發(fā)所述命令響應(yīng)模塊和更新模塊;
所述命令響應(yīng)模塊,還用于收到所述第二簽名模塊的觸發(fā)時(shí)根據(jù)所述當(dāng)前計(jì)數(shù)值和所述第二簽名結(jié)果組成認(rèn)證請(qǐng)求命令響應(yīng)數(shù)據(jù)并返回給所述客戶端;
所述更新模塊,用于更新所述計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值。
進(jìn)一步的,上述命令接收模塊,還用于接收客戶端下發(fā)的注銷請(qǐng)求命令;相應(yīng)的:
所述設(shè)備還包括第三解析模塊,用于解析所述命令接收模塊接收到的所述注銷請(qǐng)求命令獲取密鑰句柄,刪除所述存儲(chǔ)模塊中的與所述密鑰句柄對(duì)應(yīng)的用戶應(yīng)用公私鑰對(duì),觸發(fā)所述命令響應(yīng)模塊;
所述命令響應(yīng)模塊,還用于根據(jù)所述第三解析模塊的執(zhí)行結(jié)果向客戶端返回包含注銷結(jié)果的響應(yīng)碼。
進(jìn)一步的,所述設(shè)備還包括配置模塊;所述命令接收模塊還用于接收客戶端下發(fā)的設(shè)備配置命令,并觸發(fā)所述配置模塊;
所述配置模塊,用于根據(jù)所述設(shè)備配置命令的數(shù)據(jù)域確定當(dāng)前簽名算法類型,并觸發(fā)所述命令響應(yīng)模塊;
所述命令響應(yīng)模塊,還用于在收到所述配置模塊的觸發(fā)時(shí)向所述客戶端返回表示命令執(zhí)行成功的響應(yīng)數(shù)據(jù)。
進(jìn)一步的,所述命令接收模塊還用于接收客戶端下發(fā)的獲取設(shè)備信息命令,并觸發(fā)命令響應(yīng)模塊;
所述命令響應(yīng)模塊,還用于在收到所述命令接收模塊的觸發(fā)時(shí)向所述客戶端返回包含硬件身份標(biāo)識(shí)碼的響應(yīng)數(shù)據(jù)。
上述設(shè)備證書(shū)中包含有硬件身份標(biāo)識(shí)碼和設(shè)備證書(shū)公私鑰對(duì)。
本發(fā)明達(dá)到的有益效果如下:使用本發(fā)明提供的安全支付設(shè)備及方法,不需要用戶輸入密碼,只需要在設(shè)備上做相應(yīng)的交互動(dòng)作(如:按確認(rèn)鍵、刷指紋、刷虹膜等等)確認(rèn)是用戶本人在操作就可完成操作,既簡(jiǎn)化了操作提升了用戶體驗(yàn),又保證了支付的安全性。
附圖說(shuō)明
圖1是實(shí)施例1提供的一種安全支付方法流程圖;
圖2是實(shí)施例2提供的一種安全支付設(shè)備的工作方法流程圖;
圖3是實(shí)施例3提供的一種安全支付設(shè)備的組成框圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例1
本實(shí)施例提供了一種安全支付方法,以安全支付設(shè)備為執(zhí)行主體進(jìn)行介紹,本實(shí)施例提供的安全支付設(shè)備(以下簡(jiǎn)稱設(shè)備)是具有數(shù)字簽名功能、提供身份認(rèn)證的設(shè)備,一般采用藍(lán)牙、NFC接口。本實(shí)施例提供的方法具體涉及設(shè)備接收并處理支付請(qǐng)求命令的流程,如圖1所示,具體包括以下步驟:
步驟S1、設(shè)備接收到客戶端下發(fā)的支付請(qǐng)求命令,解析所述支付請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)、密鑰句柄和交易文本,設(shè)備顯示交易文本中的關(guān)鍵數(shù)據(jù),等待用戶確認(rèn)操作;
優(yōu)選的,所述交易文本包括訂單信息和時(shí)間戳,所述交易文本中的關(guān)鍵數(shù)據(jù)包括交易金額、商戶名稱、交易時(shí)間;還可以是設(shè)備顯示所述交易文本,等待用戶確認(rèn)操作。
所述第一參數(shù)是客戶端數(shù)據(jù)的摘要值,所述第二參數(shù)是客戶端的應(yīng)用ID的摘要值。例如,所述第一參數(shù)和第二參數(shù)均是采用SHA-256計(jì)算的摘要值,第一參數(shù)和第二參數(shù)長(zhǎng)度為32字節(jié)。
步驟S2、當(dāng)設(shè)備接收到用戶確認(rèn)操作時(shí),根據(jù)所述密鑰句柄找到用戶應(yīng)用私鑰,獲取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值;
具體的,所述密鑰句柄、用戶應(yīng)用公私鑰對(duì)是所述設(shè)備在接收并處理注冊(cè)請(qǐng)求命令的流程中生成并保存的,所述密鑰句柄與所述用戶應(yīng)用公私鑰對(duì)唯一對(duì)應(yīng)。本步驟具體的,根據(jù)當(dāng)前設(shè)備中保存的密鑰句柄和用戶應(yīng)用公私鑰的對(duì)應(yīng)關(guān)系,找到與步驟S1解析出的密鑰句柄所對(duì)應(yīng)的用戶應(yīng)用私鑰。
優(yōu)選的,所述計(jì)數(shù)器的計(jì)數(shù)值的初值為0,設(shè)備每進(jìn)行一次用戶身份認(rèn)證,計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值加1。
進(jìn)一步的,本步驟還可以是:當(dāng)設(shè)備接收到用戶確認(rèn)操作時(shí),設(shè)備使用保存的解密密鑰對(duì)所述密鑰句柄解密得到用戶應(yīng)用私鑰,具體的:設(shè)備使用保存的解密密鑰對(duì)所述密鑰句柄進(jìn)行解密得到第一解密數(shù)據(jù)和第二解密數(shù)據(jù),判斷所述第二參數(shù)和所述第二解密數(shù)據(jù)是否一致,是則將所述第一解密數(shù)據(jù)作為用戶應(yīng)用私鑰,否則根據(jù)預(yù)設(shè)錯(cuò)誤字節(jié)碼組成支付請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給所述客戶端。
步驟S3、設(shè)備根據(jù)所述第一參數(shù)、第二參數(shù)、當(dāng)前計(jì)數(shù)值和交易文本組成第三待簽名數(shù)據(jù),使用所述用戶應(yīng)用私鑰對(duì)所述第三待簽名數(shù)據(jù)進(jìn)行簽名得到第三簽名結(jié)果;
優(yōu)選的,本步驟所述進(jìn)行簽名所采用的簽名算法類型可以是預(yù)先在設(shè)備中設(shè)置的簽名算法類型,還可以是設(shè)備接收到客戶端下發(fā)的設(shè)備配置命令時(shí)在設(shè)備中配置完成的簽名算法類型。
步驟S4、設(shè)備根據(jù)所述當(dāng)前計(jì)數(shù)值和所述第三簽名結(jié)果組成支付請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給客戶端。
實(shí)施例2
如圖2所示,本實(shí)施例提供了一種安全支付設(shè)備的工作方法,具體包括以下步驟:
步驟1:設(shè)備上電,初始化;
步驟2:設(shè)備接收客戶端下發(fā)的命令;
具體的,客戶端下發(fā)的所述命令支持APDU數(shù)據(jù)格式。
步驟3:設(shè)備判斷接收到的所述命令的類型,若所述命令是獲取版本號(hào)命令則執(zhí)行步驟4,若所述命令是獲取設(shè)備信息命令則執(zhí)行步驟5,若所述命令是注銷請(qǐng)求命令則執(zhí)行步驟6,若所述命令是注冊(cè)請(qǐng)求命令則執(zhí)行步驟7,若所述命令是認(rèn)證請(qǐng)求命令則執(zhí)行步驟12,若所述命令是支付請(qǐng)求命令則執(zhí)行步驟17;
具體的,設(shè)備根據(jù)接收到的所述命令的第二個(gè)字節(jié)判斷命令類型,若第二個(gè)字節(jié)為0x03則所述命令為獲取版本號(hào)命令,若第二個(gè)字節(jié)為0xC5則所述命令為獲取設(shè)備信息命令,若第二個(gè)字節(jié)為0x01則所述命令為注冊(cè)請(qǐng)求命令,若第二個(gè)字節(jié)為0x02則所述命令為認(rèn)證請(qǐng)求命令,若第二個(gè)字節(jié)為0x04則所述命令為支付請(qǐng)求命令,若第二個(gè)字節(jié)為0xC4則所述命令為注銷請(qǐng)求命令。
進(jìn)一步的,上述步驟3還包括,若接收到的所述命令是設(shè)備配置命令,則根據(jù)所述設(shè)備配置命令的數(shù)據(jù)域確定簽名算法類型,并向客戶端返回表示命令執(zhí)行成功的響應(yīng)數(shù)據(jù)。
具體的,若接收到的所述命令的第二個(gè)字節(jié)為0xC6則所述命令為設(shè)備配置命令,所述設(shè)備配置命令的數(shù)據(jù)域?yàn)榕渲眯畔ⅲ雠渲眯畔門LV(Tag+Length+Value)格式,所述配置信息可以包括應(yīng)用類型、簽名算法類型。其中簽名算法類型對(duì)應(yīng)的Tag為0x62,根據(jù)Tag=0x62對(duì)應(yīng)的Value值確定簽名算法類型。例如,所述配置信息中包含的簽名算法類型的TLV結(jié)構(gòu)如下:0x62 0102,則根據(jù)Value=02確定的簽名算法類型為SM2算法。
步驟4:設(shè)備向客戶端返回包含版本號(hào)的響應(yīng)數(shù)據(jù),返回步驟2;
例如,設(shè)備支持的協(xié)議協(xié)議版本號(hào)是U2F,則設(shè)備向客戶端返回的響應(yīng)數(shù)據(jù)為ASCII編碼(U2F_V2)。
步驟5:設(shè)備向客戶端返回包含HID的響應(yīng)數(shù)據(jù),返回步驟2;
具體,所述HID(硬件身份標(biāo)識(shí)碼)用于唯一標(biāo)識(shí)所述設(shè)備,出廠時(shí)預(yù)植到所述設(shè)備中。
所述HID的長(zhǎng)度共16比特位,其中:
BIT1~2:產(chǎn)品型號(hào),表示產(chǎn)品類型,范圍從‘01’~‘99’。
BIT3~4:廠商編號(hào),表示生產(chǎn)廠商的編號(hào),范圍從‘01’~‘99’。
BIT5~BIT6:生產(chǎn)年份,取自然年的后兩位,如:2016年,則取值為‘16’。
BIT7~BIT8:生產(chǎn)月份,范圍是‘01’~‘12’。
BIT9~BIT16:自然序列號(hào),范圍是‘00000001’~‘99999999’。
優(yōu)選的,設(shè)備向客戶端返回包含HID的響應(yīng)數(shù)據(jù)為TLV格式,其中Tag=0x34,L=0x10,V=HID。
進(jìn)一步的,本步驟中設(shè)備向客戶端返回的響應(yīng)數(shù)據(jù)中還可以包含應(yīng)用版本號(hào)、簽名支持算法類型。
步驟6:設(shè)備解析所述注銷請(qǐng)求命令獲取密鑰句柄,刪除存儲(chǔ)的所述密鑰句柄及其對(duì)應(yīng)的用戶應(yīng)用公私鑰對(duì),向客戶端返回包含注銷結(jié)果的響應(yīng)碼,返回步驟2;
優(yōu)選的,設(shè)備解析所述注銷請(qǐng)求命令獲取密鑰句柄,刪除存儲(chǔ)的與所述密鑰句柄對(duì)應(yīng)的用戶應(yīng)用公私鑰對(duì)。
例如,若注銷成功則設(shè)備向客戶端返回0x9000,若注銷失敗則設(shè)備向客戶端返回0x6989。
步驟7:設(shè)備判斷是否接收到用戶確認(rèn)操作,是則執(zhí)行步驟9,否則執(zhí)行步驟8;
優(yōu)選的,所述設(shè)備帶有按鍵,所述用戶確認(rèn)操作具體為用戶按鍵操作。所述用戶確認(rèn)操作還可以是用戶刷指紋、刷虹膜等操作。
步驟8:設(shè)備向客戶端返回錯(cuò)誤響應(yīng)碼,返回步驟2;
例如,設(shè)備向客戶端返回0x6985。
步驟9:設(shè)備解析所述注冊(cè)請(qǐng)求命令獲取第一參數(shù)和第二參數(shù),生成用戶應(yīng)用公私鑰對(duì)及其對(duì)應(yīng)的密鑰句柄并存儲(chǔ);
具體的,設(shè)備解析所述注冊(cè)請(qǐng)求命令,將命令數(shù)據(jù)域的前32個(gè)字節(jié)作為第一參數(shù),將后32個(gè)字節(jié)作為第二參數(shù)。優(yōu)選的,所述第一參數(shù)為挑戰(zhàn)參數(shù),例如客戶端數(shù)據(jù),所述第二參數(shù)為應(yīng)用參數(shù),例如應(yīng)用標(biāo)識(shí)。
優(yōu)選的,設(shè)備生成的用戶應(yīng)用公鑰和私鑰的長(zhǎng)度為65字節(jié)。
進(jìn)一步的,本步驟還可以為:設(shè)備解析所述注冊(cè)請(qǐng)求命令獲取第一參數(shù)和第二參數(shù),生成用戶應(yīng)用公私鑰對(duì),根據(jù)用戶應(yīng)用私鑰和所述第二參數(shù)組成待加密數(shù)據(jù),使用保存的加密密鑰對(duì)所述待加密數(shù)據(jù)進(jìn)行加密得到密鑰句柄;
步驟10:設(shè)備根據(jù)所述第一參數(shù)、所述第二參數(shù)、所述密鑰句柄和用戶應(yīng)用公鑰組成第一待簽名數(shù)據(jù),使用設(shè)備證書(shū)私鑰對(duì)所述第一待簽名數(shù)據(jù)進(jìn)行簽名得到第一簽名結(jié)果;
具體的,設(shè)備出廠時(shí)預(yù)植了設(shè)備證書(shū),所述設(shè)備證書(shū)中包含有用于唯一標(biāo)識(shí)所述設(shè)備的HID(硬件身份標(biāo)識(shí)碼)和設(shè)備證書(shū)公私鑰對(duì)。
優(yōu)選的,本步驟所述進(jìn)行簽名所采用的簽名算法類型是設(shè)備接收到設(shè)備配置命令時(shí)所配置的簽名算法類型,例如,SM2算法。還可以是采用預(yù)先在設(shè)備中設(shè)置的簽名算法類型。
步驟11:設(shè)備根據(jù)所述用戶應(yīng)用公鑰、所述密鑰句柄、所述設(shè)備證書(shū)和所述第一簽名結(jié)果組成注冊(cè)請(qǐng)求命令響應(yīng)數(shù)據(jù),向客戶端返回所述注冊(cè)請(qǐng)求命令響應(yīng)數(shù)據(jù),返回步驟2。
具體的,將所述用戶應(yīng)用公鑰、所述密鑰句柄、所述設(shè)備證書(shū)和所述第一簽名結(jié)果按照第一預(yù)設(shè)格式組成注冊(cè)請(qǐng)求命令響應(yīng)數(shù)據(jù)。
例如,所述第一預(yù)設(shè)格式為:0x05+用戶應(yīng)用公鑰(65字節(jié))+密鑰句柄的長(zhǎng)度(1字節(jié))+密鑰句柄+設(shè)備證書(shū)+第一簽名結(jié)果。
步驟12:設(shè)備判斷是否接收到用戶確認(rèn)操作,是則執(zhí)行步驟13,否則執(zhí)行步驟16;
優(yōu)選的,所述用戶確認(rèn)操作具體為用戶按鍵操作。
步驟13:設(shè)備解析所述認(rèn)證請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)和密鑰句柄,根據(jù)所述密鑰句柄找到用戶應(yīng)用私鑰;
具體的,設(shè)備解析所述認(rèn)證請(qǐng)求命令,將命令數(shù)據(jù)域的第2至第33個(gè)字節(jié)作為第一參數(shù),將命令數(shù)據(jù)域的第35至第66個(gè)字節(jié)作為第二參數(shù),根據(jù)命令數(shù)據(jù)域的第67個(gè)字節(jié)得到密鑰句柄長(zhǎng)度,從命令數(shù)據(jù)域的第68個(gè)字節(jié)開(kāi)始獲取與所述密鑰句柄長(zhǎng)度相等的字節(jié)數(shù)作為密鑰句柄。
進(jìn)一步的,本步驟還可以為:設(shè)備解析所述認(rèn)證請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)和密鑰句柄,使用保存的解密密鑰對(duì)所述密鑰句柄進(jìn)行解密得到第一解密數(shù)據(jù)和第二解密數(shù)據(jù),判斷所述第二參數(shù)和所述第二解密數(shù)據(jù)是否一致,是則將所述第一解密數(shù)據(jù)作為用戶應(yīng)用私鑰,否則根據(jù)預(yù)設(shè)錯(cuò)誤字節(jié)碼組成支付請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給所述客戶端。
本實(shí)施例中,在支付操作之前可以通過(guò)認(rèn)證請(qǐng)求命令對(duì)用戶身份進(jìn)行安全認(rèn)證,從而增強(qiáng)支付安全性。
步驟14:設(shè)備獲取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,根據(jù)所述第一參數(shù)、第二參數(shù)、當(dāng)前計(jì)數(shù)值得到第二待簽名數(shù)據(jù),使用所述用戶應(yīng)用私鑰對(duì)所述第二待簽名數(shù)據(jù)進(jìn)行簽名得到第二簽名結(jié)果;
優(yōu)選的,所述計(jì)數(shù)器的計(jì)數(shù)值的初值為0x00,設(shè)備每做一次認(rèn)證,計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值加1。
優(yōu)選的,本步驟所述進(jìn)行簽名所采用的簽名算法類型是設(shè)備接收到設(shè)備配置命令時(shí)所配置的簽名算法類型,例如,SM2算法。還可以是采用預(yù)先在設(shè)備中設(shè)置的簽名算法類型。
步驟15:設(shè)備根據(jù)所述當(dāng)前計(jì)數(shù)值和所述第二簽名結(jié)果組成認(rèn)證請(qǐng)求命令響應(yīng)數(shù)據(jù),向客戶端返回所述認(rèn)證請(qǐng)求命令響應(yīng)數(shù)據(jù),將計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值加1,返回步驟2;
具體的,將所述當(dāng)前計(jì)數(shù)值和所述第二簽名結(jié)果按照第二預(yù)設(shè)格式組成認(rèn)證請(qǐng)求命令響應(yīng)數(shù)據(jù)。
例如,所述第二預(yù)設(shè)格式為:0x01+當(dāng)前計(jì)數(shù)值+第二簽名結(jié)果。
步驟16:設(shè)備向客戶端返回錯(cuò)誤響應(yīng)碼,返回步驟2;
例如,設(shè)備向客戶端返回0x6986。
步驟17:設(shè)備解析所述支付請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)、密鑰句柄和交易文本,顯示所述交易文本中的關(guān)鍵數(shù)據(jù),等待用戶確認(rèn);
具體的,設(shè)備解析所述認(rèn)證請(qǐng)求命令,將命令數(shù)據(jù)域的第2至第33個(gè)字節(jié)作為第一參數(shù),將命令數(shù)據(jù)域的第35至第66個(gè)字節(jié)作為第二參數(shù),根據(jù)命令數(shù)據(jù)域的第67個(gè)字節(jié)得到密鑰句柄長(zhǎng)度,從命令數(shù)據(jù)域的第68個(gè)字節(jié)開(kāi)始獲取與所述密鑰句柄長(zhǎng)度相等的數(shù)據(jù)作為密鑰句柄,根據(jù)命令數(shù)據(jù)域的第69和第70個(gè)字節(jié)得到交易文本長(zhǎng)度,從命令數(shù)據(jù)域的第71個(gè)字節(jié)開(kāi)始獲取與所述交易文本長(zhǎng)度相等的數(shù)據(jù)作為交易文本。
優(yōu)選的,所述交易文本中的關(guān)鍵數(shù)據(jù)包括交易金額、商戶名稱、交易時(shí)間。
步驟18:設(shè)備判斷是否接收到用戶確認(rèn)操作,是則執(zhí)行步驟20,否則執(zhí)行步驟19;
優(yōu)選的,所述用戶確認(rèn)操作具體為用戶按鍵操作。
步驟19:設(shè)備向客戶端返回錯(cuò)誤響應(yīng)碼,返回步驟2;
例如,設(shè)備向客戶端返回0x6986。
步驟20:設(shè)備根據(jù)所述密鑰句柄找到用戶應(yīng)用私鑰,獲取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值;
步驟21:設(shè)備根據(jù)所述第一參數(shù)、第二參數(shù)、當(dāng)前計(jì)數(shù)值和交易文本組成第三待簽名數(shù)據(jù),使用所述用戶應(yīng)用私鑰對(duì)所述第三待簽名數(shù)據(jù)進(jìn)行簽名得到第三簽名結(jié)果;
優(yōu)選的,本步驟所述進(jìn)行簽名所采用的簽名算法類型是設(shè)備接收到設(shè)備配置命令時(shí)所配置的簽名算法類型,例如,SM2算法。還可以是采用預(yù)先在設(shè)備中設(shè)置的簽名算法類型。
步驟22:設(shè)備根據(jù)所述當(dāng)前計(jì)數(shù)值和所述第三簽名結(jié)果組成支付請(qǐng)求命令響應(yīng)數(shù)據(jù),向客戶端返回所述支付請(qǐng)求命令響應(yīng)數(shù)據(jù),返回步驟2。
具體的,將所述當(dāng)前計(jì)數(shù)值和所述第三簽名結(jié)果按照第三預(yù)設(shè)格式組成支付請(qǐng)求命令響應(yīng)數(shù)據(jù)。
例如,所述第三預(yù)設(shè)格式為:0x01+當(dāng)前計(jì)數(shù)值+第三簽名結(jié)果。
實(shí)施例3
如圖3所示,本實(shí)施例提供了一種安全支付設(shè)備,包括命令接收模塊101、第一解析模塊102、顯示模塊103、用戶交互模塊104、第三簽名模塊105、命令響應(yīng)模塊106;
所述命令接收模塊101,用于接收客戶端下發(fā)的支付請(qǐng)求命令;
所述第一解析模塊102,用于當(dāng)所述命令接收模塊101接收到所述支付請(qǐng)求命令時(shí),解析所述支付請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)、密鑰句柄和交易文本,
顯示模塊103,用于顯示所述交易文本,并觸發(fā)用戶交互模塊104;還可以具體用于顯示所述交易文本中的關(guān)鍵數(shù)據(jù),并觸發(fā)用戶交互模塊104。
所述用戶交互模塊104,用于接收用戶確認(rèn)操作并觸發(fā)第三簽名模塊105;優(yōu)選的,所述用戶交互模塊具體為按鍵或刷指紋器或刷虹膜器。
所述第三簽名模塊105,用于根據(jù)所述第一解析模塊102解析得到的所述密鑰句柄從存儲(chǔ)模塊107中獲得用戶應(yīng)用私鑰,用于獲取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,根據(jù)所述當(dāng)前計(jì)數(shù)值、所述第一解析模塊102解析得到的所述第一參數(shù)、所述第二參數(shù)和所述交易文本組成第三待簽名數(shù)據(jù),使用所述用戶應(yīng)用私鑰對(duì)所述第三待簽名數(shù)據(jù)進(jìn)行簽名得到第三簽名結(jié)果;
所述命令響應(yīng)模塊106,用于根據(jù)所述第三簽名模塊105獲得的所述當(dāng)前計(jì)數(shù)值和所述第三簽名結(jié)果組成支付請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給所述客戶端;
所述設(shè)備還包括存儲(chǔ)模塊107,用于存儲(chǔ)設(shè)備生成的用戶應(yīng)用私鑰;
或者所述設(shè)備還包括解密模塊,所述存儲(chǔ)模塊,用于存儲(chǔ)加解密密鑰和解密模塊解密得到的用戶應(yīng)用私鑰;所述解密模塊,用于使用存儲(chǔ)模塊107中保存的解密密鑰從所述第一解析模塊102解析得到的所述密鑰句柄中解密獲得用戶應(yīng)用私鑰。
優(yōu)選的,所述解密模塊具體用于:使用保存的解密密鑰對(duì)所述密鑰句柄進(jìn)行解密得到第一解密數(shù)據(jù)和第二解密數(shù)據(jù),判斷所述第二參數(shù)和所述第二解密數(shù)據(jù)是否一致,是則將所述第一解密數(shù)據(jù)作為用戶應(yīng)用私鑰,否則觸發(fā)所述命令響應(yīng)模塊;相應(yīng)的,所述命令響應(yīng)模塊,還用于在收到解密模塊的觸發(fā)時(shí),根據(jù)預(yù)設(shè)錯(cuò)誤字節(jié)碼組成支付請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給所述客戶端。
進(jìn)一步的,所述命令接收模塊,還用于接收客戶端下發(fā)的注冊(cè)請(qǐng)求命令;相應(yīng)的,所述設(shè)備還包括第一判斷模塊、第二解析模塊、第一簽名模塊;
所述第一判斷模塊,用于判斷所述用戶交互模塊是否接收到用戶確認(rèn)操作;
所述第二解析模塊,用于在所述第一判斷模塊判斷接收到用戶確認(rèn)操作時(shí),解析所述命令接收模塊接收到的所述注冊(cè)請(qǐng)求命令獲取第一參數(shù)和第二參數(shù),生成用戶應(yīng)用公私鑰對(duì)及其對(duì)應(yīng)的密鑰句柄;
或者,所述第二解析模塊,用于在所述第一判斷模塊判斷接收到用戶確認(rèn)操作時(shí),解析所述命令接收模塊接收到的所述注冊(cè)請(qǐng)求命令獲取第一參數(shù)和第二參數(shù),生成用戶應(yīng)用公私鑰對(duì),根據(jù)用戶應(yīng)用私鑰和所述第二參數(shù)組成待加密數(shù)據(jù),使用存儲(chǔ)模塊中保存的加密密鑰對(duì)所述待加密數(shù)據(jù)進(jìn)行加密得到密鑰句柄;
所述存儲(chǔ)模塊,用于存儲(chǔ)所述用戶應(yīng)用公私鑰對(duì);
所述第一簽名模塊,用于根據(jù)所述第一參數(shù)、所述第二參數(shù)、所述密鑰句柄和用戶應(yīng)用公鑰組成第一待簽名數(shù)據(jù),使用設(shè)備證書(shū)私鑰對(duì)所述第一待簽名數(shù)據(jù)進(jìn)行簽名得到第一簽名結(jié)果,觸發(fā)所述命令響應(yīng)模塊;
所述命令響應(yīng)模塊,還用于收到所述第一簽名模塊的觸發(fā)時(shí)根據(jù)所述用戶應(yīng)用公鑰、所述密鑰句柄、設(shè)備證書(shū)和所述第一簽名結(jié)果組成注冊(cè)請(qǐng)求命令的響應(yīng)數(shù)據(jù)并返回給所述客戶端,以及用于在所述第一判斷模塊判斷結(jié)果為否時(shí)向所述客戶端返回錯(cuò)誤響應(yīng)碼。
優(yōu)選的,本實(shí)施例中所述設(shè)備證書(shū)中包含有硬件身份標(biāo)識(shí)碼和設(shè)備證書(shū)公私鑰對(duì)。
進(jìn)一步的,所述命令接收模塊,還用于接收客戶端下發(fā)的注銷請(qǐng)求命令;相應(yīng)的,所述設(shè)備還包括第三解析模塊,用于解析所述命令接收模塊接收到的所述注銷請(qǐng)求命令獲取密鑰句柄,刪除所述存儲(chǔ)模塊中的與所述密鑰句柄對(duì)應(yīng)的用戶應(yīng)用公私鑰對(duì),觸發(fā)所述命令響應(yīng)模塊;相應(yīng)的,所述命令響應(yīng)模塊,還用于根據(jù)所述第三解析模塊的執(zhí)行結(jié)果向客戶端返回包含注銷結(jié)果的響應(yīng)碼。
進(jìn)一步的,所述命令接收模塊,還用于接收客戶端下發(fā)的認(rèn)證請(qǐng)求命令;相應(yīng)的,所述設(shè)備還包括第一判斷模塊、第四解析模塊、第二簽名模塊和更新模塊;
所述第一判斷模塊,用于判斷所述用戶交互模塊是否接收到用戶確認(rèn)操作;
所述第四解析模塊,用于解析所述命令接收模塊接收到的所述認(rèn)證請(qǐng)求命令獲取第一參數(shù)、第二參數(shù)和密鑰句柄;
所述第二簽名模塊,用于根據(jù)所述密鑰句柄獲得用戶應(yīng)用私鑰,獲取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,根據(jù)所述第一參數(shù)、第二參數(shù)、當(dāng)前計(jì)數(shù)值組成第二待簽名數(shù)據(jù),使用所述用戶應(yīng)用私鑰對(duì)所述第二待簽名數(shù)據(jù)進(jìn)行簽名得到第二簽名結(jié)果,觸發(fā)所述命令響應(yīng)模塊和更新模塊;
所述命令響應(yīng)模塊,還用于收到所述第二簽名模塊的觸發(fā)時(shí)根據(jù)所述當(dāng)前計(jì)數(shù)值和所述第二簽名結(jié)果組成認(rèn)證請(qǐng)求命令響應(yīng)數(shù)據(jù)并返回給所述客戶端;
所述更新模塊,用于更新所述計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值。
進(jìn)一步的,所述設(shè)備還包括配置模塊;所述命令接收模塊還用于接收客戶端下發(fā)的設(shè)備配置命令,并觸發(fā)所述配置模塊;所述配置模塊,用于根據(jù)所述設(shè)備配置命令的數(shù)據(jù)域確定當(dāng)前簽名算法類型,并觸發(fā)所述命令響應(yīng)模塊;相應(yīng)的,所述命令響應(yīng)模塊,還用于在收到所述配置模塊的觸發(fā)時(shí)向所述客戶端返回表示命令執(zhí)行成功的響應(yīng)數(shù)據(jù)。
進(jìn)一步的,所述命令接收模塊還用于接收客戶端下發(fā)的獲取設(shè)備信息命令,并觸發(fā)命令響應(yīng)模塊;相應(yīng)的,所述命令響應(yīng)模塊,還用于在收到所述命令接收模塊的觸發(fā)時(shí)向所述客戶端返回包含硬件身份標(biāo)識(shí)碼的響應(yīng)數(shù)據(jù)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。