本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證和交易的方法及裝置。
背景技術(shù):
隨著密碼技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,目前常用的1024位rsa算法面臨嚴(yán)重的安全威脅,國(guó)家密碼局決定采用國(guó)密算法(sm2算法和sm3算法)替換rsa算法。其中,sm2算法規(guī)定了簽名、驗(yàn)證、密鑰交換等具體細(xì)節(jié),sm3用于密碼應(yīng)用中的數(shù)字簽名和驗(yàn)證、消息認(rèn)證碼的生成與驗(yàn)證以及隨機(jī)數(shù)的生成,可滿足多種密碼應(yīng)用的安全需求。
智能密鑰設(shè)備可實(shí)現(xiàn)待簽名的敏感信息在智能密鑰設(shè)備的液晶上進(jìn)行顯示,達(dá)到交易過(guò)程為用戶可控狀態(tài)和所見(jiàn)及所簽的效果,杜絕了黑客篡改信息所帶來(lái)的安全漏洞,在安全級(jí)別得到了質(zhì)的提升。
目前,對(duì)于智能密鑰設(shè)備多數(shù)銀行仍舊使用rsa算法進(jìn)行交易和雙向認(rèn)證,針對(duì)智能密鑰設(shè)備,國(guó)密算法暫不支持雙向認(rèn)證和交易,安全性受到嚴(yán)重威脅。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中存在的問(wèn)題,提供了一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證和交易的方法及裝置。
本發(fā)明采用的技術(shù)方案是:
一方面,一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證和交易的方法,方法包括:
步驟s1:當(dāng)接收到服務(wù)器發(fā)送的獲取客戶端證書(shū)的請(qǐng)求時(shí),智能密鑰設(shè)備回送內(nèi)置的客戶端證書(shū)列表,客戶端證書(shū)列表包括證書(shū)索引;
步驟s2:當(dāng)接收到使用客戶端證書(shū)簽名的請(qǐng)求時(shí),智能密鑰設(shè)備根據(jù)請(qǐng)求中包含的證書(shū)索引檢索證書(shū),根據(jù)檢索到的證書(shū)的屬性判斷客戶端證書(shū)類(lèi)型,如果是雙向認(rèn)證的證書(shū),執(zhí)行步驟s3;如果是交易的證書(shū),則執(zhí)行步驟s4;
步驟s3:智能密鑰設(shè)備對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將客戶端簽名結(jié)果返回客戶端,結(jié)束;
步驟s4:當(dāng)接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求時(shí),智能密鑰設(shè)備判斷客戶端簽名原文是否符合報(bào)文規(guī)范,是則執(zhí)行步驟s5;否則執(zhí)行步驟s6;
步驟s5:智能密鑰設(shè)備解析客戶端簽名原文并顯示交易信息,用戶按鍵確認(rèn)后,對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將客戶端簽名結(jié)果返回客戶端,結(jié)束;
步驟s6:當(dāng)智能密鑰設(shè)備接收到客戶端發(fā)送的簽名請(qǐng)求后,解析客戶端簽名原文,對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將簽名結(jié)果返回客戶端,結(jié)束。
具體地,步驟s1中,判斷客戶端證書(shū)類(lèi)型之后,還包括:當(dāng)接收到客戶端發(fā)送的密碼和驗(yàn)證請(qǐng)求時(shí),智能密鑰設(shè)備驗(yàn)證密碼是否正確,如果錯(cuò)誤,向客戶端返回錯(cuò)誤信息,如果正確,向客戶端返回正確信息后,等待接收到服務(wù)器發(fā)送的客戶端證書(shū)。
具體地,智能密鑰設(shè)備向客戶端返回錯(cuò)誤信息之前,還包括:智能密鑰設(shè)備判斷自身是否鎖死,是則打開(kāi)鎖,執(zhí)行智能密鑰設(shè)備驗(yàn)證密碼是否正確,否則向客戶端返回錯(cuò)誤信息。
具體地,步驟s3中將客戶端簽名結(jié)果返回客戶端的時(shí)候,還包括:將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器;
服務(wù)器接收到客戶端發(fā)送的客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū),調(diào)用摘要運(yùn)算接口對(duì)客戶端簽名結(jié)果做一次摘要運(yùn)算。
進(jìn)一步地,服務(wù)器收到客戶端發(fā)送的客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)之后,還包括:服務(wù)器使用客戶端證書(shū)驗(yàn)證客戶端簽名結(jié)果是否正確;服務(wù)器驗(yàn)證客戶端證書(shū)是否合法。
優(yōu)選地,步驟s3之前還包括:當(dāng)接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求時(shí),智能密鑰設(shè)備解析客戶端簽名原文并判斷客戶端簽名原文是否符合報(bào)文規(guī)范,是則向客戶端返回錯(cuò)誤信息,否則向客戶端返回正確信息,執(zhí)行步驟s3。
進(jìn)一步地,步驟s3之前,還包括:客戶端調(diào)用摘要運(yùn)算接口對(duì)客戶端簽名原文進(jìn)行摘要運(yùn)算,并將摘要結(jié)果發(fā)送至智能密鑰設(shè)備;
智能密鑰設(shè)備接收到客戶端發(fā)送的摘要結(jié)果后,將摘要結(jié)果作為客戶端簽名原文,解析當(dāng)前客戶端簽名原文并判斷當(dāng)前客戶端簽名原文是否符合報(bào)文規(guī)范,是則向客戶端返回錯(cuò)誤信息,否則向客戶端返回正確信息,執(zhí)行步驟s3。
更近一步地,步驟s3中將客戶端簽名結(jié)果返回客戶端時(shí),還包括:將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器;
服務(wù)器接收到客戶端發(fā)送的當(dāng)前客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū),調(diào)用摘要運(yùn)算接口對(duì)客戶端簽名結(jié)果做兩次摘要運(yùn)算。
具體地,步驟s3中,將客戶端簽名結(jié)果返回客戶端時(shí),還包括:將客戶端當(dāng)前支持的對(duì)稱加密算法返回客戶端。
具體地,步驟s3中將客戶端簽名結(jié)果返回客戶端后,還包括:服務(wù)器選擇客戶端支持的安全性最高的對(duì)稱加密算法作為雙向認(rèn)證通信的加密算法,并使用客戶端證書(shū)公鑰對(duì)此加密算法進(jìn)行加密,并將加密結(jié)果發(fā)送給客戶端。
具體地,當(dāng)接收到客戶端發(fā)送的解密請(qǐng)求時(shí),智能密鑰設(shè)備對(duì)加密結(jié)果進(jìn)行解密,并將解密得到的加密算法返回客戶端。
進(jìn)一步地,將解密結(jié)果返回客戶端之后,還包括:客戶端根據(jù)加密算法,通過(guò)生產(chǎn)隨機(jī)數(shù)接口產(chǎn)生一隨機(jī)數(shù)作為通信密鑰,并使用服務(wù)器證書(shū)公鑰加密發(fā)送給服務(wù)器,服務(wù)器接收到客戶端發(fā)送的加密結(jié)果后,通過(guò)解密接口使用服務(wù)器證書(shū)私鑰解密,獲得雙向認(rèn)證加密用的通信密鑰。
具體地,步驟s1之前還包括:客戶端向服務(wù)器發(fā)送雙向認(rèn)證連接請(qǐng)求,服務(wù)器將服務(wù)器信息發(fā)送至客戶端進(jìn)行驗(yàn)證,驗(yàn)證未通過(guò),客戶端中斷雙向認(rèn)證連接的建立,驗(yàn)證通過(guò),服務(wù)器向客戶端發(fā)送雙向認(rèn)證連接請(qǐng)求,執(zhí)行步驟s1。
進(jìn)一步地,步驟s1中服務(wù)器信息具體包括:服務(wù)器公鑰證書(shū)、服務(wù)器簽名原文和服務(wù)器簽名結(jié)果;
將服務(wù)器信息發(fā)送至客戶端進(jìn)行驗(yàn)證之前,還包括:服務(wù)器通過(guò)隨機(jī)數(shù)生成接口產(chǎn)生隨機(jī)數(shù)作為服務(wù)器簽名原文,通過(guò)摘要接口對(duì)服務(wù)器簽名原文做摘要運(yùn)算后,對(duì)摘要運(yùn)算結(jié)果進(jìn)行簽名得到服務(wù)器簽名結(jié)果。
再進(jìn)一步地,服務(wù)器將服務(wù)器信息發(fā)送至客戶端進(jìn)行驗(yàn)證,具體包括:客戶端驗(yàn)證服務(wù)器證書(shū)公鑰是否合法;客戶端驗(yàn)證服務(wù)器簽名結(jié)果是否正確。
更進(jìn)一步地,客戶端驗(yàn)證服務(wù)器證書(shū)公鑰是否合法,具體包括:客戶端驗(yàn)證服務(wù)器公鑰證書(shū)是否過(guò)期,客戶端驗(yàn)證發(fā)行服務(wù)器證書(shū)的ca是否可靠,客戶端驗(yàn)證發(fā)行者證書(shū)的公鑰能否正確解開(kāi)服務(wù)器證書(shū)的發(fā)行者的數(shù)字簽名,客戶端驗(yàn)證服務(wù)器證書(shū)上的域名是否和服務(wù)器的實(shí)際域名相匹配;
客戶端驗(yàn)證服務(wù)器簽名結(jié)果是否正確,具體包括:客戶端對(duì)服務(wù)器簽名原文進(jìn)行摘要運(yùn)算,使用服務(wù)器證書(shū)對(duì)服務(wù)器簽名結(jié)果進(jìn)行驗(yàn)證。
具體地,步驟s4之前還包括:客戶端讀取智能密鑰設(shè)備序列號(hào),服務(wù)器驗(yàn)證用戶信息和智能密鑰設(shè)備序列號(hào)是否匹配,是則登陸網(wǎng)銀系統(tǒng)成功,執(zhí)行步驟s4,否則登錄網(wǎng)銀系統(tǒng)失敗。
具體地,步驟s5和步驟s6中,將客戶端簽名結(jié)果返回客戶端后,還包括:客戶端將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器。
具體地,服務(wù)器接收到客戶端發(fā)送的信息后,還包括:對(duì)客戶端簽名原文進(jìn)行一次摘要運(yùn)算,并根據(jù)用戶信息和證書(shū)信息,比對(duì)當(dāng)前證書(shū)是否是此用戶綁定的證書(shū),如果不是,交易失?。蝗绻?,則服務(wù)器對(duì)簽名原文進(jìn)行摘要運(yùn)算并驗(yàn)證簽名是否成功,是則轉(zhuǎn)賬交易成功,否則轉(zhuǎn)賬交易失敗。
具體地,根據(jù)檢索到的證書(shū)的屬性判斷客戶端證書(shū)類(lèi)型,具體為:智能密鑰設(shè)備根據(jù)證書(shū)的密鑰值判斷客戶端證書(shū)類(lèi)型。
另一方面,一種智能密鑰設(shè)備雙向認(rèn)證和交易的裝置,裝置包括:
第一接收模塊,用于接收服務(wù)器發(fā)送的獲取客戶端證書(shū)的請(qǐng)求;
回送模塊,用于當(dāng)?shù)谝唤邮漳K接收到服務(wù)器發(fā)送的獲取客戶端證書(shū)的請(qǐng)求時(shí),回送內(nèi)置的客戶端證書(shū)列表,客戶端證書(shū)列表包括證書(shū)索引;
第二接收模塊,用于接收使用客戶端證書(shū)簽名的請(qǐng)求;
檢索模塊,用于當(dāng)?shù)诙邮漳K接收到使用客戶端證書(shū)簽名的請(qǐng)求時(shí),根據(jù)請(qǐng)求中包含的證書(shū)索引檢索證書(shū);
第一判斷模塊,用于根據(jù)檢索模塊檢索到的證書(shū)的屬性判斷客戶端證書(shū)類(lèi)型;
運(yùn)算模塊,用于當(dāng)?shù)谝慌袛嗄K判斷客戶端證書(shū)類(lèi)型為雙向認(rèn)證的證書(shū)時(shí),對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算;還用于當(dāng)顯示模塊顯示交易信息后,用戶按鍵確認(rèn)后,對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算;
發(fā)送模塊,用于將運(yùn)算模塊得到的客戶端簽名結(jié)果發(fā)送至客戶端;
第三接收模塊,用于當(dāng)?shù)谝慌袛嗄K判斷客戶端證書(shū)類(lèi)型為交易的證書(shū)時(shí),接收客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求;
第二判斷模塊,用于當(dāng)?shù)谌邮漳K接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求時(shí),判斷客戶端簽名原文是否符合報(bào)文規(guī)范;
解析模塊,用于當(dāng)?shù)诙袛嗄K判斷客戶端簽名原文符合報(bào)文規(guī)范時(shí),解析客戶端簽名原文;還用于當(dāng)?shù)谒慕邮漳K接收到客戶端發(fā)送的簽名請(qǐng)求時(shí),解析客戶端簽名原文;
顯示模塊,用于顯示交易信息;
第四接收模塊,用于當(dāng)?shù)诙袛嗄K判斷客戶端簽名原文不符合報(bào)文規(guī)范時(shí),接收客戶端發(fā)送的簽名請(qǐng)求。
具體地,裝置還包括:第五接收模塊、驗(yàn)證模塊、返回模塊和第六接收模塊;
第五接收模塊,用于接收客戶端發(fā)送的密碼和驗(yàn)證請(qǐng)求;
驗(yàn)證模塊,用于當(dāng)?shù)谖褰邮漳K接收到客戶端發(fā)送的密碼和驗(yàn)證請(qǐng)求時(shí),驗(yàn)證密碼是否正確;
返回模塊,用于當(dāng)驗(yàn)證模塊驗(yàn)證密碼錯(cuò)誤時(shí),向客戶端返回錯(cuò)誤信息;當(dāng)驗(yàn)證模塊驗(yàn)證密碼正確時(shí),向客戶端返回正確信息;
第六接收模塊,用于當(dāng)驗(yàn)證模塊驗(yàn)證密碼正確時(shí),等待接收到服務(wù)器發(fā)送的客戶端證書(shū)。
優(yōu)選地,裝置還包括:第三判斷模塊;
第三判斷模塊,用于判斷裝置自身是否鎖死;
驗(yàn)證模塊,還用于當(dāng)?shù)谌袛嗄K判斷裝置自身鎖死時(shí),打開(kāi)鎖驗(yàn)證密碼是否正確;
返回模塊,還用于當(dāng)?shù)谌袛嗄K判斷裝置自身鎖死時(shí),向客戶端返回錯(cuò)誤信息。
具體地,發(fā)送模塊,具體用于:將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器。
具體地,返回模塊還用于:當(dāng)?shù)诙袛嗄K判斷客戶端簽名原文符合報(bào)文規(guī)范時(shí),向客戶端返回錯(cuò)誤信息;當(dāng)?shù)诙袛嗄K判斷客戶端簽名原文不符合報(bào)文規(guī)范時(shí),向客戶端返回正確信息,運(yùn)行運(yùn)算模塊。
優(yōu)選地,裝置還包括:第七接收模塊和作為模塊;
第七接收模塊,用于接收客戶端發(fā)送的摘要結(jié)果;
作為模塊,用于當(dāng)?shù)谄呓邮漳K接收到客戶端發(fā)送的摘要結(jié)果后,將摘要結(jié)果作為客戶端簽名原文;
解析模塊,還用于解析客戶端簽名原文;
第二判斷模塊,還用于判斷當(dāng)前客戶端簽名原文是否符合報(bào)文規(guī)范;
返回模塊,還用于當(dāng)?shù)诙袛嗄K判斷當(dāng)前客戶端簽名原文符合報(bào)文規(guī)范時(shí),向客戶端返回錯(cuò)誤信息;當(dāng)?shù)诙袛嗄K判斷當(dāng)前客戶端簽名原文不符合報(bào)文規(guī)范時(shí),向客戶端返回正確信息;
運(yùn)算模塊,還用于當(dāng)返回模塊向客戶端返回正確信息后,對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算。
具體地,裝置還包括:第八接收模塊;
第八接收模塊,用于接收客戶端發(fā)送的簽名請(qǐng)求。
具體地,發(fā)送模塊,還具體用于:將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器。
具體地,發(fā)送模塊,具體用于:將客戶端當(dāng)前支持的對(duì)稱加密算法返回客戶端。
優(yōu)選地,裝置還包括:第九接收模塊和解密模塊;
第九接收模塊,用于接收客戶端發(fā)送的解密請(qǐng)求;
解密模塊,用于當(dāng)?shù)诰沤邮漳K接收到客戶端發(fā)送的解密請(qǐng)求時(shí),對(duì)加密結(jié)果進(jìn)行解密,并將解密得到的加密算法返回客戶端。
具體地,第一判斷模塊,具體用于:根據(jù)證書(shū)的密鑰值判斷客戶端證書(shū)類(lèi)型。
本發(fā)明取得的有益效果是:采用本發(fā)明的技術(shù)方法,智能密鑰設(shè)備雙向認(rèn)證和交易,大大提高雙向認(rèn)證和交易的安全性。
附圖說(shuō)明
為了更清楚的說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例二中提供了一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證的方法;
圖2為本發(fā)明實(shí)施例三中提供了一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證的方法;
圖3為本發(fā)明實(shí)施例四中提供了一種實(shí)現(xiàn)智能密鑰設(shè)備交易的方法;
圖4為本發(fā)明實(shí)施例七中提供了一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證和交易的裝置。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例一
本實(shí)施例提供了一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證和交易的方法,該方法包括:
步驟s1:當(dāng)接收到服務(wù)器發(fā)送的獲取客戶端證書(shū)的請(qǐng)求時(shí),智能密鑰設(shè)備回送內(nèi)置的客戶端證書(shū)列表,客戶端證書(shū)列表包括證書(shū)索引;
步驟s2:當(dāng)接收到使用客戶端證書(shū)簽名的請(qǐng)求時(shí),智能密鑰設(shè)備根據(jù)請(qǐng)求中包含的證書(shū)索引檢索證書(shū),根據(jù)檢索到的證書(shū)的屬性判斷客戶端證書(shū)類(lèi)型,如果是雙向認(rèn)證的證書(shū),執(zhí)行步驟s3;如果是交易的證書(shū),則執(zhí)行步驟s4;
步驟s3:智能密鑰設(shè)備對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將客戶端簽名結(jié)果返回客戶端,結(jié)束;
步驟s4:當(dāng)接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求時(shí),智能密鑰設(shè)備判斷客戶端簽名原文是否符合報(bào)文規(guī)范,是則執(zhí)行步驟s5;否則執(zhí)行步驟s6;
步驟s5:智能密鑰設(shè)備解析客戶端簽名原文并顯示交易信息,用戶按鍵確認(rèn)后,對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將客戶端簽名結(jié)果返回客戶端,結(jié)束;
步驟s6:當(dāng)智能密鑰設(shè)備接收到客戶端發(fā)送的簽名請(qǐng)求后,解析客戶端簽名原文,對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將簽名結(jié)果返回客戶端,結(jié)束。
具體地,步驟s1中,判斷客戶端證書(shū)類(lèi)型之后,還包括:當(dāng)接收到客戶端發(fā)送的密碼和驗(yàn)證請(qǐng)求時(shí),智能密鑰設(shè)備驗(yàn)證密碼是否正確,如果錯(cuò)誤,向客戶端返回錯(cuò)誤信息,如果正確,向客戶端返回正確信息后,等待接收到服務(wù)器發(fā)送的客戶端證書(shū)。
具體地,智能密鑰設(shè)備向客戶端返回錯(cuò)誤信息之前,還包括:智能密鑰設(shè)備判斷自身是否鎖死,是則打開(kāi)鎖,執(zhí)行智能密鑰設(shè)備驗(yàn)證密碼是否正確,否則向客戶端返回錯(cuò)誤信息。
具體地,步驟s3中將客戶端簽名結(jié)果返回客戶端的時(shí)候,還包括:將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器;
服務(wù)器接收到客戶端發(fā)送的客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū),調(diào)用摘要運(yùn)算接口對(duì)客戶端簽名結(jié)果做一次摘要運(yùn)算。
進(jìn)一步地,服務(wù)器收到客戶端發(fā)送的客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)之后,還包括:服務(wù)器使用客戶端證書(shū)驗(yàn)證客戶端簽名結(jié)果是否正確;服務(wù)器驗(yàn)證客戶端證書(shū)是否合法。
優(yōu)選地,步驟s3之前還包括:當(dāng)接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求時(shí),智能密鑰設(shè)備解析客戶端簽名原文并判斷客戶端簽名原文是否符合報(bào)文規(guī)范,是則向客戶端返回錯(cuò)誤信息,否則向客戶端返回正確信息,執(zhí)行步驟s3。
進(jìn)一步地,步驟s3之前,還包括:客戶端調(diào)用摘要運(yùn)算接口對(duì)客戶端簽名原文進(jìn)行摘要運(yùn)算,并將摘要結(jié)果發(fā)送至智能密鑰設(shè)備;
智能密鑰設(shè)備接收到客戶端發(fā)送的摘要結(jié)果后,將摘要結(jié)果作為客戶端簽名原文,解析當(dāng)前客戶端簽名原文并判斷當(dāng)前客戶端簽名原文是否符合報(bào)文規(guī)范,是則向客戶端返回錯(cuò)誤信息,否則向客戶端返回正確信息,執(zhí)行步驟s3。
更近一步地,步驟s3中將客戶端簽名結(jié)果返回客戶端時(shí),還包括:將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器;
服務(wù)器接收到客戶端發(fā)送的當(dāng)前客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū),調(diào)用摘要運(yùn)算接口對(duì)客戶端簽名結(jié)果做兩次摘要運(yùn)算。
具體地,步驟s3中,將客戶端簽名結(jié)果返回客戶端時(shí),還包括:將客戶端當(dāng)前支持的對(duì)稱加密算法返回客戶端。
具體地,步驟s3中將客戶端簽名結(jié)果返回客戶端后,還包括:服務(wù)器選擇客戶端支持的安全性最高的對(duì)稱加密算法作為雙向認(rèn)證通信的加密算法,并使用客戶端證書(shū)公鑰對(duì)此加密算法進(jìn)行加密,并將加密結(jié)果發(fā)送給客戶端。
具體地,當(dāng)接收到客戶端發(fā)送的解密請(qǐng)求時(shí),智能密鑰設(shè)備對(duì)加密結(jié)果進(jìn)行解密,并將解密得到的加密算法返回客戶端。
進(jìn)一步地,將解密結(jié)果返回客戶端之后,還包括:客戶端根據(jù)加密算法,通過(guò)生產(chǎn)隨機(jī)數(shù)接口產(chǎn)生一隨機(jī)數(shù)作為通信密鑰,并使用服務(wù)器證書(shū)公鑰加密發(fā)送給服務(wù)器,服務(wù)器接收到客戶端發(fā)送的加密結(jié)果后,通過(guò)解密接口使用服務(wù)器證書(shū)私鑰解密,獲得雙向認(rèn)證加密用的通信密鑰。
具體地,步驟s1之前還包括:客戶端向服務(wù)器發(fā)送雙向認(rèn)證連接請(qǐng)求,服務(wù)器將服務(wù)器信息發(fā)送至客戶端進(jìn)行驗(yàn)證,驗(yàn)證未通過(guò),客戶端中斷雙向認(rèn)證連接的建立,驗(yàn)證通過(guò),服務(wù)器向客戶端發(fā)送雙向認(rèn)證連接請(qǐng)求,執(zhí)行步驟s1。
進(jìn)一步地,步驟s1中服務(wù)器信息具體包括:服務(wù)器公鑰證書(shū)、服務(wù)器簽名原文和服務(wù)器簽名結(jié)果;
將服務(wù)器信息發(fā)送至客戶端進(jìn)行驗(yàn)證之前,還包括:服務(wù)器通過(guò)隨機(jī)數(shù)生成接口產(chǎn)生隨機(jī)數(shù)作為服務(wù)器簽名原文,通過(guò)摘要接口對(duì)服務(wù)器簽名原文做摘要運(yùn)算后,對(duì)摘要運(yùn)算結(jié)果進(jìn)行簽名得到服務(wù)器簽名結(jié)果。
再進(jìn)一步地,服務(wù)器將服務(wù)器信息發(fā)送至客戶端進(jìn)行驗(yàn)證,具體包括:客戶端驗(yàn)證服務(wù)器證書(shū)公鑰是否合法;客戶端驗(yàn)證服務(wù)器簽名結(jié)果是否正確。
更進(jìn)一步地,客戶端驗(yàn)證服務(wù)器證書(shū)公鑰是否合法,具體包括:客戶端驗(yàn)證服務(wù)器公鑰證書(shū)是否過(guò)期,客戶端驗(yàn)證發(fā)行服務(wù)器證書(shū)的ca是否可靠,客戶端驗(yàn)證發(fā)行者證書(shū)的公鑰能否正確解開(kāi)服務(wù)器證書(shū)的發(fā)行者的數(shù)字簽名,客戶端驗(yàn)證服務(wù)器證書(shū)上的域名是否和服務(wù)器的實(shí)際域名相匹配;
客戶端驗(yàn)證服務(wù)器簽名結(jié)果是否正確,具體包括:客戶端對(duì)服務(wù)器簽名原文進(jìn)行摘要運(yùn)算,使用服務(wù)器證書(shū)對(duì)服務(wù)器簽名結(jié)果進(jìn)行驗(yàn)證。
具體地,步驟s4之前還包括:客戶端讀取智能密鑰設(shè)備序列號(hào),服務(wù)器驗(yàn)證用戶信息和智能密鑰設(shè)備序列號(hào)是否匹配,是則登陸網(wǎng)銀系統(tǒng)成功,執(zhí)行步驟s4,否則登錄網(wǎng)銀系統(tǒng)失敗。
具體地,步驟s5和步驟s6中,將客戶端簽名結(jié)果返回客戶端后,還包括:客戶端將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器。
具體地,服務(wù)器接收到客戶端發(fā)送的信息后,還包括:對(duì)客戶端簽名原文進(jìn)行一次摘要運(yùn)算,并根據(jù)用戶信息和證書(shū)信息,比對(duì)當(dāng)前證書(shū)是否是此用戶綁定的證書(shū),如果不是,交易失??;如果是,則服務(wù)器對(duì)簽名原文進(jìn)行摘要運(yùn)算并驗(yàn)證簽名是否成功,是則轉(zhuǎn)賬交易成功,否則轉(zhuǎn)賬交易失敗。
具體地,根據(jù)檢索到的證書(shū)的屬性判斷客戶端證書(shū)類(lèi)型,具體為:智能密鑰設(shè)備根據(jù)證書(shū)的密鑰值判斷客戶端證書(shū)類(lèi)型。
實(shí)施例二
本實(shí)施例二提供了一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證的方法,如圖1所示,包括:
步驟101:客戶端安裝智能密鑰設(shè)備中間件并在網(wǎng)銀證書(shū)系統(tǒng)下載簽名證書(shū);
在本實(shí)施例中,智能密鑰設(shè)備中間件為安裝在pc端的、能通過(guò)此軟件的接口和智能密鑰設(shè)備進(jìn)行交互的軟件。智能密鑰設(shè)備可顯示相關(guān)交易信息,它在設(shè)計(jì)時(shí)規(guī)定了第一次用簽名算法進(jìn)行簽名時(shí)可直接對(duì)智能密鑰設(shè)備外部的摘要結(jié)果進(jìn)行簽名,下載簽名證書(shū)結(jié)束后,簽名算法簽名時(shí)不再對(duì)由軟件實(shí)現(xiàn)的智能密鑰設(shè)備外部摘要運(yùn)算得到的摘要結(jié)果簽名,所有簽名原文必須傳入智能密鑰設(shè)備內(nèi)部,由智能密鑰設(shè)備硬件做摘要,然后再做簽名,防止本智能密鑰設(shè)備作為其它usbkey使用。
步驟102:客戶端通過(guò)網(wǎng)絡(luò)向服務(wù)器發(fā)送雙向認(rèn)證連接請(qǐng)求;
需要說(shuō)明的是,本實(shí)施例中的服務(wù)器特指雙向認(rèn)證(ssl)服務(wù)器。
在本實(shí)施例中,客戶端發(fā)送的雙向認(rèn)證連接請(qǐng)求包括雙向認(rèn)證協(xié)議的版本號(hào)、客戶端支持的加密算法的種類(lèi)以及其他服務(wù)器和客戶端之間通訊所需要的信息。
步驟103:服務(wù)器收到客戶端的請(qǐng)求后,生成服務(wù)器簽名原文,并對(duì)服務(wù)器簽名原文進(jìn)行簽名后,服務(wù)器將服務(wù)器公鑰證書(shū)、服務(wù)器簽名原文和服務(wù)器簽名結(jié)果發(fā)給客戶端;
具體地,在本實(shí)施例中,服務(wù)器通過(guò)隨機(jī)數(shù)生成接口產(chǎn)生隨機(jī)數(shù)作為簽名原文,通過(guò)摘要接口對(duì)隨機(jī)數(shù)做摘要(hash)運(yùn)算,然后對(duì)摘要(hash)結(jié)果簽名后,將服務(wù)器公鑰證書(shū)、服務(wù)器簽名原文和服務(wù)器簽名結(jié)果發(fā)給客戶端。
除此之外,服務(wù)器還向客戶端傳送了雙向認(rèn)證協(xié)議的版本號(hào),服務(wù)器支持的加密算法的種類(lèi)及其他相關(guān)信息。
例如,簽名原文為123456,經(jīng)過(guò)第二預(yù)設(shè)算法即摘要運(yùn)算后的結(jié)果為:feqncco3yq9h5zugld3czjt4lbs=,通過(guò)第一預(yù)設(shè)算法即簽名后的結(jié)果為:
miig3gyjkozihvcnaqccoiigzzccbsscaqexczajbgurdgmcgguamasgcsqgsib3dqehaaccbbwwggw4miieokadagecago24tumaaaaazkuma0gcsqgsib3dqebbquamdgxezarbgojkiajk/isz。
步驟104:客戶端驗(yàn)證服務(wù)器公鑰證書(shū)是否合法,如果是則執(zhí)行步驟105,否則中斷雙向認(rèn)證連接的建立;
在本實(shí)施例中,客戶端利用服務(wù)器傳過(guò)來(lái)的信息驗(yàn)證服務(wù)器公鑰證書(shū)的合法性。其中,驗(yàn)證服務(wù)器公鑰證書(shū)的合法性具體包括:判斷服務(wù)器公鑰證書(shū)是否過(guò)期,判斷發(fā)行服務(wù)器證書(shū)的ca是否可靠,判斷發(fā)行者證書(shū)的公鑰能否正確解開(kāi)服務(wù)器公鑰證書(shū)的發(fā)行者的數(shù)字簽名,判斷服務(wù)器公鑰證書(shū)上的域名是否和服務(wù)器的實(shí)際域名相匹配,當(dāng)判斷均為是時(shí)則服務(wù)器公鑰證書(shū)合法,否則服務(wù)器公鑰證書(shū)不合法。
具體地,頒發(fā)服務(wù)器證書(shū)或客戶端證書(shū)時(shí),被頒發(fā)的證書(shū)由ca根證書(shū)簽名。通過(guò)根證書(shū)或證書(shū)鏈,可驗(yàn)證服務(wù)器證書(shū)和客戶端證書(shū)的合法性,達(dá)到驗(yàn)證證書(shū)合法性的目的。
步驟105:客戶端使用服務(wù)器公鑰證書(shū)和服務(wù)器簽名原文對(duì)服務(wù)器簽名結(jié)果進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)則執(zhí)行步驟106,驗(yàn)證未通過(guò)則中斷雙向認(rèn)證連接的建立;
具體地,在本實(shí)施例中,客戶端對(duì)簽名原文進(jìn)行摘要運(yùn)算,然后調(diào)用驗(yàn)證簽名方法、摘要結(jié)果,使用服務(wù)器公鑰對(duì)簽名結(jié)果進(jìn)行驗(yàn)證,其中,簽名結(jié)果可調(diào)用自定義的接口進(jìn)行驗(yàn)證。
步驟106:服務(wù)器向客戶端發(fā)送雙向認(rèn)證連接請(qǐng)求;
在本實(shí)施例中,服務(wù)器通過(guò)網(wǎng)絡(luò)向客戶端發(fā)送的雙向認(rèn)證連接請(qǐng)求,包括:雙向認(rèn)證協(xié)議的版本號(hào)、加密算法的種類(lèi)以及其他服務(wù)器和客戶端之間通訊所需要的信息。
步驟107:智能密鑰設(shè)備驗(yàn)證pin碼,驗(yàn)證未通過(guò),則中斷雙向認(rèn)證連接的建立,驗(yàn)證通過(guò)則執(zhí)行步驟108;
具體地,在本實(shí)施例中,用戶在客戶端輸入登錄密碼后,客戶端將登錄密碼發(fā)送至智能密鑰設(shè)備,智能密鑰設(shè)備去比對(duì)此密碼與自身預(yù)設(shè)的密碼是否相同,如果相同,則驗(yàn)證通過(guò),執(zhí)行步驟108,否則中斷雙向認(rèn)證連接的建立。
更具體地,在本實(shí)施例中,驗(yàn)證智能密鑰設(shè)備的pin碼,pin碼驗(yàn)證通過(guò)后,簽名接口才能進(jìn)行簽名,如果驗(yàn)證未通過(guò),需判斷智能密鑰設(shè)備是否鎖死,是則退出,否則繼續(xù)驗(yàn)證pin碼是否正確。
需要說(shuō)明的是,在執(zhí)行步驟108之前還包括:服務(wù)器將簽名原文發(fā)送給智能密鑰設(shè)備,智能密鑰設(shè)備接收后,解析簽名原文,判斷簽名原文是否符合報(bào)文規(guī)范,是則報(bào)錯(cuò),結(jié)束雙向認(rèn)證,否則執(zhí)行步驟108。由于簽名原文是隨機(jī)數(shù),在雙向認(rèn)證中簽名原文均是不符合報(bào)文規(guī)范,即無(wú)需使用智能密鑰設(shè)備的按“確認(rèn)”鍵,不顯示信息,只需驗(yàn)證密碼。
步驟108:客戶端收到服務(wù)器發(fā)送的連接請(qǐng)求后,客戶端生成簽名原文,并通過(guò)智能密鑰設(shè)備中間件接口找到智能密鑰設(shè)備內(nèi)的客戶端證書(shū),使用客戶端證書(shū)通過(guò)簽名接口對(duì)簽名原文進(jìn)行摘要和簽名運(yùn)算;
具體地,在本實(shí)施例中,客戶端收到服務(wù)器請(qǐng)求后,客戶端會(huì)先產(chǎn)生隨機(jī)數(shù)作為簽名原文,客戶端將簽名原文發(fā)送給智能密鑰設(shè)備后,客戶端調(diào)用簽名接口并發(fā)送調(diào)用簽名接口的請(qǐng)求給智能密鑰設(shè)備,智能密鑰設(shè)備對(duì)隨機(jī)數(shù)進(jìn)行摘要運(yùn)算和簽名運(yùn)算。
一般情況下,通過(guò)軟件接口調(diào)用客戶端證書(shū)做簽名運(yùn)算前,摘要運(yùn)算接口只包含摘要指令,簽名接口只包含簽名指令,但在本實(shí)施例中,簽名接口既包含摘要指令又包含簽名指令,即簽名接口先后實(shí)現(xiàn)摘要和簽名運(yùn)算。
需要說(shuō)明的是,在本實(shí)施例中,運(yùn)用國(guó)密算法sm2進(jìn)行簽名運(yùn)算,sm3進(jìn)行摘要運(yùn)算。
在本實(shí)施例中,調(diào)用的簽名接口為skf_eccsigndata,接口skf_eccsigndata只做簽名,但是為了避免本智能密鑰設(shè)備作為其它usbkey使用,在本實(shí)施例中,接口skf_eccsigndata既做摘要,又做簽名。接口簽名前,必須先做摘要,一般摘要運(yùn)算有對(duì)應(yīng)接口實(shí)現(xiàn),生成固定長(zhǎng)度的數(shù)據(jù)。
例如,簽名原文為123456,經(jīng)過(guò)第二預(yù)設(shè)算法即摘要運(yùn)算后的結(jié)果為:feqncco3yq9h5zugld3czjt4lbs=,通過(guò)第一預(yù)設(shè)算法即簽名后的結(jié)果為:
miig3gyjkozihvcnaqccoiigzzccbsscaqexczajbgurdgmcgguamasgcsqgsib3dqehaaccbbwwggw4miieokadagecago24tumaaaaazkuma0gcsqgsib3dqebbquamdgxezarbgojkiajk/isz。
步驟109:簽名結(jié)束后,客戶端將客戶端簽名原文、客戶端簽名結(jié)果、客戶端證書(shū)和當(dāng)前支持的對(duì)稱加密算法發(fā)送給服務(wù)器;
在本實(shí)施例中,客戶端已告知服務(wù)器支持哪些對(duì)稱加密算法,在服務(wù)器決定用哪種加密算法后,會(huì)將所用加密算法發(fā)送給客戶端。
步驟110:服務(wù)器對(duì)客戶端簽名原文進(jìn)行一次摘要運(yùn)算;
例如,摘要后的結(jié)果為feqncco3yq9h5zugld3czjt4lbs=。
步驟111:服務(wù)器使用客戶端證書(shū)驗(yàn)證客戶端簽名結(jié)果是否正確,是則執(zhí)行步驟112,否則中斷雙向認(rèn)證連接的建立;
在本實(shí)施例中,驗(yàn)證簽名結(jié)果的時(shí)候,需要先對(duì)簽名原文做摘要,再驗(yàn)證簽名結(jié)果是否正確。具體地,先調(diào)用verify接口對(duì)簽名原文做摘要后,對(duì)簽名結(jié)果進(jìn)行驗(yàn)證。
驗(yàn)證簽名時(shí)候,需要先對(duì)簽名原文做摘要,再驗(yàn)證。簽名時(shí)候,也是嫌對(duì)簽名原文作占用,再簽名的。做摘要,是生成固定長(zhǎng)度的數(shù)據(jù)。
步驟112:服務(wù)器驗(yàn)證客戶端證書(shū)是否合法,驗(yàn)證通過(guò)則服務(wù)器臨時(shí)保存客戶端證書(shū),繼續(xù)執(zhí)行步驟113,驗(yàn)證未通過(guò)中斷雙向認(rèn)證連接的建立;
在本實(shí)施例中,服務(wù)器驗(yàn)證客戶端證書(shū)是否合法具體包括:判斷客戶的證書(shū)使用日期是否有效,判斷為客戶提供證書(shū)的ca是否可靠,判斷發(fā)行ca的公鑰能否正確解開(kāi)客戶證書(shū)的發(fā)行ca的數(shù)字簽名,檢查客戶的證書(shū)是否在證書(shū)廢止列表(crl)中。
步驟113:服務(wù)器選擇客戶端支持的安全性最高的對(duì)稱加密算法作為雙向認(rèn)證通信的加密算法,并用客戶端證書(shū)公鑰對(duì)此加密算法進(jìn)行加密,并將加密結(jié)果發(fā)送給客戶端;
在本實(shí)施例中,服務(wù)器通過(guò)服務(wù)器端加密接口,利用客戶端證書(shū)公鑰對(duì)此加密算法進(jìn)行加密,在服務(wù)器驗(yàn)證完客戶端證書(shū)后,客戶端已經(jīng)將支持的加密算法發(fā)送給服務(wù)器。
步驟114:客戶端接收加密結(jié)果后,使用客戶端證書(shū)私鑰進(jìn)行解密,根據(jù)服務(wù)器約定的加密算法,通過(guò)生產(chǎn)隨機(jī)數(shù)接口產(chǎn)生一隨機(jī)數(shù),作為通信密鑰,并使用服務(wù)器公鑰對(duì)通信密鑰進(jìn)行加密,將加密結(jié)果發(fā)送給服務(wù)器;
在本實(shí)施例中,客戶端接收到的加密結(jié)果,是使用智能密鑰設(shè)備內(nèi)對(duì)應(yīng)證書(shū)的公鑰進(jìn)行加密的,使用同公鑰對(duì)應(yīng)的私鑰,即可解密密文,得到加密前的數(shù)據(jù),并且客戶端通過(guò)解密接口、使用加密證書(shū)私鑰進(jìn)行解密。
步驟115:服務(wù)器接收客戶端發(fā)送的加密結(jié)果,使用服務(wù)器私鑰解密,獲得雙向認(rèn)證加密用的通信密鑰,雙向通道建立,結(jié)束。
具體地,服務(wù)器接收到的加密結(jié)果是使用服務(wù)器證書(shū)的公鑰加密產(chǎn)生的,使用同服務(wù)器證書(shū)對(duì)應(yīng)的私鑰,即可解密密文,得到機(jī)密前的數(shù)據(jù)。
在本實(shí)施例中,服務(wù)器獲得雙向認(rèn)證加密用的通信密鑰后,服務(wù)器、客戶端接下來(lái)的通信,都使用約定好的對(duì)稱加密算法和對(duì)稱密鑰加密,雙向認(rèn)證通道建立成功。
實(shí)施例三
本實(shí)施例提供一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證的方法,如圖2所示,包括:
步驟201:客戶端安裝智能密鑰設(shè)備中間件并在網(wǎng)銀證書(shū)系統(tǒng)下載簽名證書(shū);
在本實(shí)施例中,智能密鑰設(shè)備中間件為安裝在pc端的、能通過(guò)此軟件的接口和智能密鑰設(shè)備進(jìn)行交互的軟件。智能密鑰設(shè)備可顯示相關(guān)交易信息,它在設(shè)計(jì)時(shí)規(guī)定了第一次用簽名算法進(jìn)行簽名時(shí)可直接對(duì)智能密鑰設(shè)備外部的摘要結(jié)果進(jìn)行簽名,下載簽名證書(shū)結(jié)束后,簽名算法簽名時(shí)不再對(duì)由軟件實(shí)現(xiàn)的智能密鑰設(shè)備外部摘要運(yùn)算得到的摘要結(jié)果簽名,所有簽名原文必須傳入智能密鑰設(shè)備內(nèi)部,由智能密鑰設(shè)備硬件做摘要,然后再做簽名,防止本智能密鑰設(shè)備作為其它usbkey使用。
步驟202:客戶端通過(guò)網(wǎng)絡(luò)向服務(wù)器發(fā)送雙向認(rèn)證連接請(qǐng)求;
需要說(shuō)明的是,本實(shí)施例中的服務(wù)器特指雙向認(rèn)證(ssl)服務(wù)器。
在本實(shí)施例中,客戶端發(fā)送的雙向認(rèn)證連接請(qǐng)求包括雙向認(rèn)證協(xié)議的版本號(hào)、加密算法的種類(lèi)以及其他服務(wù)器和客戶端之間通訊所需要的信息。
步驟203:服務(wù)器收到客戶端的請(qǐng)求后,生成簽名原文,并對(duì)簽名原文進(jìn)行簽名后,服務(wù)器將服務(wù)器公鑰證書(shū)、服務(wù)器簽名原文和服務(wù)器簽名結(jié)果發(fā)給客戶端;
具體地,在本實(shí)施例中,服務(wù)器通過(guò)隨機(jī)數(shù)生成接口產(chǎn)生隨機(jī)數(shù)作為簽名原文,通過(guò)摘要接口對(duì)隨機(jī)數(shù)做摘要(hash)運(yùn)算,然后對(duì)摘要(hash)結(jié)果簽名后,將服務(wù)器公鑰證書(shū)、服務(wù)器簽名原文、服務(wù)器簽名結(jié)果發(fā)給客戶端。
除此之外,服務(wù)器還向客戶端傳送了雙向認(rèn)證協(xié)議的版本號(hào),服務(wù)器支持的加密算法的種類(lèi)及其他相關(guān)信息。
例如,簽名原文為123456,經(jīng)過(guò)第二預(yù)設(shè)算法即摘要運(yùn)算后的結(jié)果為:feqncco3yq9h5zugld3czjt4lbs=,通過(guò)第一預(yù)設(shè)算法即簽名后的結(jié)果為:
miig3gyjkozihvcnaqccoiigzzccbsscaqexczajbgurdgmcgguamasgcsqgsib3dqehaaccbbwwggw4miieokadagecago24tumaaaaazkuma0gcsqgsib3dqebbquamdgxezarbgojkiajk/isz。
步驟204:客戶端驗(yàn)證服務(wù)器公鑰證書(shū)是否合法,如果是則執(zhí)行步驟205,否則中斷雙向認(rèn)證連接的建立;
在本實(shí)施例中,客戶端利用服務(wù)器傳過(guò)來(lái)的信息驗(yàn)證服務(wù)器公鑰證書(shū)的合法性。其中,驗(yàn)證服務(wù)器公鑰證書(shū)的合法性具體包括:判斷服務(wù)器公鑰證書(shū)是否過(guò)期,判斷發(fā)行服務(wù)器證書(shū)的ca是否可靠,判斷發(fā)行者證書(shū)的公鑰能否正確解開(kāi)服務(wù)器公鑰證書(shū)的發(fā)行者的數(shù)字簽名,判斷服務(wù)器公鑰證書(shū)上的域名是否和服務(wù)器的實(shí)際域名相匹配。
具體地,頒發(fā)服務(wù)器證書(shū)或客戶端證書(shū)時(shí),被頒發(fā)的證書(shū)由ca根證書(shū)簽名。通過(guò)根證書(shū)或證書(shū)鏈,可驗(yàn)證服務(wù)器證書(shū)和客戶端證書(shū)的合法性,達(dá)到驗(yàn)證證書(shū)可信任的目的。
步驟205:客戶端使用服務(wù)器公鑰證書(shū)和服務(wù)器簽名原文對(duì)服務(wù)器簽名結(jié)果進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)則執(zhí)行步驟206,驗(yàn)證未通過(guò)則客戶端中斷雙向認(rèn)證連接的建立;
具體地,在本實(shí)施例中,客戶端通過(guò)摘要算法對(duì)簽名原文進(jìn)行摘要運(yùn)算,然后調(diào)用驗(yàn)證簽名方法、摘要結(jié)果,使用服務(wù)器公鑰對(duì)簽名結(jié)果進(jìn)行驗(yàn)證。
步驟206:服務(wù)器向客戶端發(fā)送雙向認(rèn)證連接請(qǐng)求;
在本實(shí)施例中,服務(wù)器通過(guò)網(wǎng)絡(luò)向客戶端發(fā)送的雙向認(rèn)證連接請(qǐng)求,包括:雙向認(rèn)證協(xié)議的版本號(hào)、加密算法的種類(lèi)以及其他服務(wù)器和客戶端之間通訊所需要的信息。
步驟207:智能密鑰設(shè)備驗(yàn)證pin碼,驗(yàn)證未通過(guò),則中斷雙向認(rèn)證連接的建立,驗(yàn)證通過(guò)則執(zhí)行步驟208;
具體地,在本實(shí)施例中,用戶在客戶端輸入登錄密碼后,客戶端將登錄密碼發(fā)送至智能密鑰設(shè)備,智能密鑰設(shè)備去比對(duì)此密碼與自身預(yù)設(shè)的密碼是否相同,如果相同,則驗(yàn)證通過(guò),執(zhí)行步驟208,否則中斷雙向認(rèn)證連接的建立。
更具體地,在本實(shí)施例中,驗(yàn)證智能密鑰設(shè)備的pin碼,pin碼驗(yàn)證通過(guò)后,簽名接口才能進(jìn)行簽名,如果驗(yàn)證未通過(guò),需判斷智能密鑰設(shè)備是否鎖死,是則退出,否則繼續(xù)驗(yàn)證pin碼是否正確。
需要說(shuō)明的是,在執(zhí)行步驟208之前還包括:服務(wù)器將簽名原文發(fā)送給智能密鑰設(shè)備,智能密鑰設(shè)備接收后,解析簽名原文,判斷簽名原文是否符合報(bào)文規(guī)范,是則報(bào)錯(cuò),結(jié)束雙向認(rèn)證,否則執(zhí)行步驟208。由于簽名原文是隨機(jī)數(shù),在雙向認(rèn)證中簽名原文均是不符合報(bào)文規(guī)范,即無(wú)需使用智能密鑰設(shè)備的按“確認(rèn)”鍵,不顯示信息,只需驗(yàn)證密碼。
步驟208:客戶端收到服務(wù)器請(qǐng)求后,客戶端生成簽名原文,并通過(guò)智能密鑰設(shè)備中間件找到智能密鑰設(shè)備內(nèi)的客戶端證書(shū),調(diào)用摘要運(yùn)算接口對(duì)簽名原文進(jìn)行摘要運(yùn)算;
具體地,在本實(shí)施例中,客戶端收到服務(wù)器請(qǐng)求后,客戶端會(huì)先產(chǎn)生隨機(jī)數(shù)作為簽名原文,然后通過(guò)摘要運(yùn)算接口,在智能密鑰設(shè)備的外部對(duì)簽名原文進(jìn)行摘要運(yùn)算,生成固定長(zhǎng)度的數(shù)據(jù)。
需要說(shuō)明的是,在本實(shí)施例中,運(yùn)用國(guó)密算法sm2進(jìn)行簽名運(yùn)算,sm3進(jìn)行摘要運(yùn)算。
在本實(shí)施例中,調(diào)用的接口為skf_digestinit和skf_digest,
skf_digestinit接口進(jìn)行摘要初始化,skf_digest接口進(jìn)行摘要運(yùn)算,兩個(gè)接口相結(jié)合,實(shí)現(xiàn)摘要運(yùn)算。
例如,簽名原文為123456,經(jīng)過(guò)第二預(yù)設(shè)算法即摘要運(yùn)算后的結(jié)果為:feqncco3yq9h5zugld3czjt4lbs=。
在本實(shí)施例中,通過(guò)軟件接口調(diào)用客戶端證書(shū)做簽名前,摘要運(yùn)算接口只包含摘要指令,簽名接口只包含簽名指令,但在本實(shí)施例中,簽名接口即包含摘要指令,又包含簽名指令,即簽名接口先后實(shí)現(xiàn)摘要和簽名運(yùn)算。在本實(shí)施例中,調(diào)用的簽名接口為skf_eccsigndata,接口skf_eccsigndata只做簽名,但是為了避免本智能密鑰設(shè)備作為其它usbkey使用,在本實(shí)施例中,接口skf_eccsigndata既做摘要,又做簽名。接口簽名前,必須先做摘要,一般摘要運(yùn)算有對(duì)應(yīng)接口實(shí)現(xiàn),生成固定長(zhǎng)度的數(shù)據(jù)。
例如,簽名原文為123456,經(jīng)過(guò)第二預(yù)設(shè)算法即摘要運(yùn)算后的結(jié)果為:8gkhg+vrpawjmzsfdh3riyk6ffg=,通過(guò)第一預(yù)設(shè)算法即簽名后的結(jié)果為:
miig3gyjkozihvcnaqccoiigzzccbsscaqexczajbgurdgmcgguamasgcsqgsib3dqehaaccbbwwggw4miieokadagecago24tumaaaaazkuma0gcsqgsib3dqebbquamdgxezarbgojkiajk/isz。
步驟209:簽名結(jié)束后,客戶端將客戶端簽名原文、客戶端簽名結(jié)果、客戶端證書(shū)和當(dāng)前支持的對(duì)稱加密算法發(fā)送給服務(wù)器;
在本實(shí)施例中,客戶端已告知服務(wù)器支持哪些對(duì)稱加密算法,在服務(wù)器決定用哪種加密算法后,會(huì)將所用算法發(fā)送給客戶端。
步驟210:服務(wù)器對(duì)客戶端簽名原文進(jìn)行兩次摘要運(yùn)算;
例如,第一次摘要后的結(jié)果為:feqncco3yq9h5zugld3czjt4lbs=,第二次摘要后的結(jié)果為:8gkhg+vrpawjmzsfdh3riyk6ffg=。
步驟211:服務(wù)器使用客戶端證書(shū)驗(yàn)證客戶端簽名結(jié)果是否正確,是則執(zhí)行步驟212,否則中斷雙向認(rèn)證連接的建立;
在本實(shí)施例中,驗(yàn)證簽名結(jié)果的時(shí)候,需要先對(duì)簽名原文做摘要,再驗(yàn)證簽名結(jié)果是否正確。具體地,先調(diào)用verify接口對(duì)簽名原文做摘要后,對(duì)簽名結(jié)果進(jìn)行驗(yàn)證。
驗(yàn)證簽名時(shí)候,需要先對(duì)簽名原文做摘要,再驗(yàn)證。簽名時(shí)候,也是先對(duì)簽名原文作摘要,再簽名的。做摘要,是生成固定長(zhǎng)度的數(shù)據(jù)。
步驟212:服務(wù)器驗(yàn)證客戶端證書(shū)是否合法,驗(yàn)證通過(guò)則服務(wù)器臨時(shí)保存客戶端證書(shū),繼續(xù)執(zhí)行步驟213,驗(yàn)證未通過(guò)則服務(wù)器中斷雙向認(rèn)證連接的建立;
在本實(shí)施例中,服務(wù)器驗(yàn)證客戶端的公鑰證書(shū)是否合法具體包括:判斷客戶的證書(shū)使用日期是否有效,判斷為客戶提供證書(shū)的ca是否可靠,判斷發(fā)行ca的公鑰能否正確解開(kāi)客戶證書(shū)的發(fā)行ca的數(shù)字簽名,檢查客戶的證書(shū)是否在證書(shū)廢止列表(crl)中。
步驟213:服務(wù)器選擇客戶端支持的安全性最高的對(duì)稱加密算發(fā)法作為雙向認(rèn)證通信的加密算法,并用客戶端證書(shū)對(duì)此加密算法進(jìn)行加密后,將加密結(jié)果發(fā)送給客戶端;
在本實(shí)施例中,服務(wù)器通過(guò)服務(wù)器端加密接口,利用客戶端證書(shū)對(duì)此加密算法進(jìn)行加密,在服務(wù)器驗(yàn)證完客戶端證書(shū)后,客戶端已經(jīng)將支持的加密算法發(fā)送給服務(wù)器。
步驟214:客戶端接收加密結(jié)果后,使用客戶端證書(shū)私鑰進(jìn)行解密,根據(jù)服務(wù)器約定的對(duì)稱加密算法,通過(guò)生產(chǎn)隨機(jī)數(shù)接口產(chǎn)生一隨機(jī)數(shù),作為通信密鑰,并使用服務(wù)器公鑰加密發(fā)送給服務(wù)器;
在本實(shí)施例中,客戶端接收到的加密結(jié)果,是使用智能密鑰設(shè)備內(nèi)對(duì)應(yīng)證書(shū)的公鑰進(jìn)行加密的,使用同公鑰對(duì)應(yīng)的私鑰,即可解密密文,得到加密前的數(shù)據(jù),并且客戶端通過(guò)解密接口、使用加密證書(shū)私鑰進(jìn)行解密。
步驟215:服務(wù)器接收客戶端發(fā)送的加密結(jié)果,使用服務(wù)器私鑰解密,獲得雙向認(rèn)證加密用的通信密鑰,雙向通道建立,結(jié)束。
具體地,服務(wù)器接收到的加密結(jié)果是使用服務(wù)器證書(shū)的公鑰加密產(chǎn)生的,使用同服務(wù)器證書(shū)對(duì)應(yīng)的私鑰,即可解密密文,得到機(jī)密前的數(shù)據(jù)。
在本實(shí)施例中,服務(wù)器獲得雙向認(rèn)證加密用的通信密鑰后,服務(wù)器、客戶端接下來(lái)的通信,都使用約定好的對(duì)稱加密算法和對(duì)稱密鑰加密,雙向認(rèn)證通道建立成功。
實(shí)施例四
本實(shí)施例提供了一種實(shí)現(xiàn)智能密鑰設(shè)備交易的方法,如圖3所示,包括:
步驟301:網(wǎng)銀柜臺(tái)安裝智能密鑰設(shè)備中間件并在網(wǎng)銀證書(shū)系統(tǒng)下載簽名證書(shū);
步驟302:網(wǎng)銀柜臺(tái)通過(guò)智能密鑰設(shè)備序列號(hào)、證書(shū)信息和用戶網(wǎng)銀賬號(hào)綁定,成功開(kāi)戶;
在本實(shí)施例中,證書(shū)信息為證書(shū)序列號(hào)、證書(shū)有效期等;用戶網(wǎng)銀賬號(hào)即為網(wǎng)銀賬號(hào),例如身份證號(hào)或者銀行卡號(hào)等等。
例如,智能密鑰設(shè)備序列號(hào)為100000001,證書(shū)序列號(hào)為abc000001,銀行卡號(hào)為:6201234567890123。
值得說(shuō)明的是,用戶賬號(hào)、智能密鑰設(shè)備序列號(hào)和證書(shū)序列號(hào)一一對(duì)應(yīng)。在指定用戶名的前提下,必須持有對(duì)應(yīng)的智能密鑰設(shè)備和對(duì)應(yīng)的證書(shū),才可進(jìn)行網(wǎng)銀交易。
步驟303:當(dāng)用戶登錄網(wǎng)銀系統(tǒng)時(shí),客戶端讀取智能密鑰設(shè)備序列號(hào),服務(wù)器驗(yàn)證用戶名、密碼和智能密鑰設(shè)備序列號(hào)是否匹配,是則登陸網(wǎng)銀系統(tǒng)成功,執(zhí)行步驟304,否則登錄網(wǎng)銀系統(tǒng)失?。?/p>
在本實(shí)施例中,在執(zhí)行本步驟之前,還需要用戶插入智能密鑰設(shè)備并輸入用戶名、密碼。
需要說(shuō)明的是,本實(shí)施例中的服務(wù)器特指網(wǎng)銀服務(wù)器。
步驟304:智能密鑰設(shè)備接收到服務(wù)器傳來(lái)的簽名原文,判斷簽名原文是否符合報(bào)文規(guī)范,是則執(zhí)行步驟305,否則執(zhí)行步驟308;
在本實(shí)施例中,簽名原文是轉(zhuǎn)賬的交易信息。
例如,若簽名原文為:
“<?xmlversion="1.0"encoding="utf-8"?><t><d><m><k>
收款人名稱:</k><v>張三</v></m><m><k>
收款人帳號(hào):</k><v>955823609076818</v></m><m><k>
金額:</k><v>123.23</v></m></d><e><m><k>
流水號(hào):</k><v>12345678</v></m></e></t>”,則符合報(bào)文規(guī)范;
若簽名原文為:“收款人名稱:張三收款人帳號(hào):955823609076818金額:123.23流水號(hào):12345678”,則不符合報(bào)文規(guī)范。
步驟305:智能密鑰設(shè)備驗(yàn)證pin碼,驗(yàn)證通過(guò)則執(zhí)行步驟306,否則轉(zhuǎn)賬交易失??;
具體地,在本實(shí)施例中,智能密鑰設(shè)備驗(yàn)證pin碼通過(guò)后,智能密鑰設(shè)備才能進(jìn)行接下來(lái)的工作,如果驗(yàn)證未通過(guò),需判斷智能密鑰設(shè)備是否鎖死,是則退出,否則繼續(xù)驗(yàn)證pin碼是否正確,如果正確,則執(zhí)行步驟306,否則轉(zhuǎn)賬交易失敗。
步驟306:智能密鑰設(shè)備解析交易報(bào)文并顯示交易信息,判斷交易信息是否正確,是則按鍵確認(rèn),執(zhí)行步驟307,否則轉(zhuǎn)賬交易失敗,退出;
步驟307:客戶端將簽名原文傳給智能密鑰設(shè)備,智能密鑰設(shè)備調(diào)用簽名接口,根據(jù)交易報(bào)文規(guī)范對(duì)簽名原文進(jìn)行摘要和簽名運(yùn)算,執(zhí)行步驟310;
具體地,在本實(shí)施例中,客戶端將簽名原文傳給智能密鑰設(shè)備,在智能密鑰設(shè)備內(nèi)部對(duì)簽名原文進(jìn)行摘要運(yùn)算后,客戶端通過(guò)智能密鑰設(shè)備中間件找到智能密鑰設(shè)備內(nèi)的客戶端證書(shū),調(diào)用簽名接口根據(jù)交易報(bào)文規(guī)范對(duì)簽名接口進(jìn)行解析,并進(jìn)行簽名。
步驟308:智能密鑰設(shè)備驗(yàn)證pin碼,驗(yàn)證通過(guò)則執(zhí)行步驟309,否則轉(zhuǎn)賬交易失??;
具體地,在本實(shí)施例中,智能密鑰設(shè)備驗(yàn)證
通過(guò)后,智能密鑰設(shè)備才能進(jìn)行接下來(lái)的工作,如果驗(yàn)證未通過(guò),需判斷智能密鑰設(shè)備是否鎖死,是則退出,否則繼續(xù)驗(yàn)證pin碼是否正確,如果正確,執(zhí)行步驟309,否則轉(zhuǎn)賬交易失敗。
步驟309:客戶端將簽名原文傳給智能密鑰設(shè)備,通過(guò)智能密鑰設(shè)備中間件找到智能密鑰設(shè)備內(nèi)的客戶端證書(shū),調(diào)用簽名接口對(duì)簽名原文進(jìn)行摘要和簽名運(yùn)算;
步驟310:客戶端將簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送給服務(wù)器;
步驟311:服務(wù)器對(duì)客戶端發(fā)送的簽名原文進(jìn)行一次摘要運(yùn)算;
步驟312:服務(wù)器根據(jù)用戶名和證書(shū)信息比對(duì)客戶端證書(shū)是否是此用戶綁定的證書(shū),如果是,則執(zhí)行步驟309,否則轉(zhuǎn)賬交易失??;
在本實(shí)施例中,服務(wù)器還需要驗(yàn)證用戶對(duì)應(yīng)的證書(shū)信息。
步驟313:服務(wù)器對(duì)簽名原文進(jìn)行摘要運(yùn)算并驗(yàn)證簽名是否成功,是則轉(zhuǎn)賬交易成功,否則轉(zhuǎn)賬交易失敗。
具體地,在本實(shí)施例中,服務(wù)器接收客戶端信息,對(duì)簽名原文進(jìn)行一次摘要運(yùn)算后使用客戶端證書(shū)驗(yàn)證簽名結(jié)果是否正確,如果不正確則轉(zhuǎn)賬交易失敗,如果正確,則服務(wù)器確認(rèn)轉(zhuǎn)賬的報(bào)文格式是否正確,如果正確,則轉(zhuǎn)賬交易成功,否則轉(zhuǎn)賬交易失敗。
更具體地,在本實(shí)施例中,對(duì)于符合報(bào)文格式的交易,在智能密鑰設(shè)備按下“確認(rèn)”鍵后簽名成功,網(wǎng)銀后臺(tái)即可驗(yàn)證通過(guò);對(duì)于不符合報(bào)文格式的交易,網(wǎng)銀后臺(tái)可以判斷出來(lái)不是轉(zhuǎn)賬,驗(yàn)證簽名失敗。
實(shí)施例五
本實(shí)施例提供了智能密鑰設(shè)備進(jìn)行雙向認(rèn)證時(shí)執(zhí)行的操作,包括:
步驟401:當(dāng)接收到服務(wù)器發(fā)送的獲取客戶端證書(shū)的請(qǐng)求時(shí),智能密鑰設(shè)備回送內(nèi)置的客戶端證書(shū)列表,客戶端證書(shū)列表包括證書(shū)索引;
在本實(shí)施例中,步驟401之前還包括:客戶端向服務(wù)器發(fā)送雙向認(rèn)證連接請(qǐng)求,服務(wù)器將服務(wù)器信息發(fā)送至客戶端進(jìn)行驗(yàn)證,驗(yàn)證未通過(guò),客戶端中斷雙向認(rèn)證連接的建立,驗(yàn)證通過(guò),服務(wù)器向客戶端發(fā)送雙向認(rèn)證連接請(qǐng)求,執(zhí)行步驟401;
其中,服務(wù)器信息具體包括:服務(wù)器公鑰證書(shū)、服務(wù)器簽名原文和服務(wù)器簽名結(jié)果;
進(jìn)一步地,將服務(wù)器信息發(fā)送至客戶端進(jìn)行驗(yàn)證之前,還包括:服務(wù)器通過(guò)隨機(jī)數(shù)生成接口產(chǎn)生隨機(jī)數(shù)作為服務(wù)器簽名原文,通過(guò)摘要接口對(duì)服務(wù)器簽名原文做摘要運(yùn)算后,對(duì)摘要運(yùn)算結(jié)果進(jìn)行簽名得到服務(wù)器簽名結(jié)果。
更進(jìn)一步地,服務(wù)器將服務(wù)器信息發(fā)送至客戶端進(jìn)行驗(yàn)證,具體包括:客戶端驗(yàn)證服務(wù)器證書(shū)公鑰是否合法;客戶端驗(yàn)證服務(wù)器簽名結(jié)果是否正確;
再進(jìn)一步地,客戶端驗(yàn)證服務(wù)器證書(shū)公鑰是否合法,具體包括:客戶端驗(yàn)證服務(wù)器公鑰證書(shū)是否過(guò)期,客戶端驗(yàn)證發(fā)行服務(wù)器證書(shū)的ca是否可靠,客戶端驗(yàn)證發(fā)行者證書(shū)的公鑰能否正確解開(kāi)服務(wù)器證書(shū)的發(fā)行者的數(shù)字簽名,客戶端驗(yàn)證服務(wù)器證書(shū)上的域名是否和服務(wù)器的實(shí)際域名相匹配;
客戶端驗(yàn)證服務(wù)器簽名結(jié)果是否正確,具體包括:客戶端對(duì)服務(wù)器簽名原文進(jìn)行摘要運(yùn)算,使用服務(wù)器證書(shū)對(duì)服務(wù)器簽名結(jié)果進(jìn)行驗(yàn)證。
步驟402:當(dāng)接收到使用客戶端證書(shū)簽名的請(qǐng)求時(shí),智能密鑰設(shè)備根據(jù)使用客戶端證書(shū)簽名的請(qǐng)求中包含的證書(shū)索引檢索證書(shū),根據(jù)檢索到的證書(shū)的屬性判斷客戶端證書(shū)為雙向認(rèn)證的證書(shū);
在本實(shí)施例中,根據(jù)檢索到的證書(shū)的屬性判斷客戶端證書(shū)類(lèi)型,具體為:智能密鑰設(shè)備根據(jù)證書(shū)的密鑰值判斷客戶端證書(shū)類(lèi)型。
例如,雙向認(rèn)證的證書(shū)的密鑰值為:5;交易的證書(shū)的密鑰值為:4。
步驟403:當(dāng)接收到客戶端發(fā)送的密碼和驗(yàn)證請(qǐng)求時(shí),智能密鑰設(shè)備驗(yàn)證密碼是否正確,如果錯(cuò)誤,向客戶端返回錯(cuò)誤信息,如果正確,向客戶端返回正確信息;
在本實(shí)施例中,向客戶端返回錯(cuò)誤信息之前,還包括:智能密鑰設(shè)備判斷自身是否鎖死,是則打開(kāi)鎖重新驗(yàn)證密碼是否正確,否則向客戶端返回錯(cuò)誤信息。
步驟404:當(dāng)接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求時(shí),智能密鑰設(shè)備解析客戶端簽名原文并判斷客戶端簽名原文是否符合報(bào)文規(guī)范,是則所向客戶端返回錯(cuò)誤信息,否則向客戶端返回正確信息;
步驟405:當(dāng)接收到客戶端發(fā)送的簽名請(qǐng)求時(shí),智能密鑰設(shè)備對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將客戶端簽名結(jié)果返回客戶端;
在本實(shí)施例中,除了將客戶端簽名結(jié)果返回客戶端外,還包括:客戶端將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器;
具體地,服務(wù)器接收到客戶端發(fā)送的客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū),調(diào)用摘要運(yùn)算接口對(duì)客戶端簽名結(jié)果做一次摘要運(yùn)算。
具體地,服務(wù)器收到客戶端發(fā)送的客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)后,還包括:服務(wù)器使用客戶端證書(shū)驗(yàn)證服務(wù)器簽名結(jié)果是否正確;服務(wù)器驗(yàn)證客戶端證書(shū)是否合法;
在本實(shí)施例中,當(dāng)接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求時(shí),智能密鑰設(shè)備解析客戶端簽名原文并判斷客戶端簽名原文是否符合報(bào)文規(guī)范,是則所向客戶端返回錯(cuò)誤信息,否則向客戶端返回正確信息,執(zhí)行步驟405;
此外,在執(zhí)行步驟405之前,還可以包括:客戶端調(diào)用摘要運(yùn)算接口對(duì)客戶端簽名原文進(jìn)行摘要運(yùn)算,并將摘要結(jié)果發(fā)送至智能密鑰設(shè)備;智能密鑰設(shè)備接收到客戶端發(fā)送的摘要結(jié)果后,將摘要結(jié)果作為當(dāng)前客戶端簽名原文,解析當(dāng)前客戶端簽名原文并判斷當(dāng)前客戶端簽名原文是否符合報(bào)文規(guī)范,是則向客戶端返回錯(cuò)誤信息,否則向客戶端返回正確信息;
更具體地,當(dāng)接收到客戶端發(fā)送的簽名請(qǐng)求時(shí),智能密鑰設(shè)備對(duì)當(dāng)前客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將客戶端簽名結(jié)果返回客戶端。另外,將客戶端簽名結(jié)果返回客戶端時(shí),還包括:將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器;
服務(wù)器接收到客戶端發(fā)送的當(dāng)前客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū),調(diào)用摘要運(yùn)算接口對(duì)客戶端簽名結(jié)果做兩次摘要運(yùn)算。
在本實(shí)施例中,將客戶端簽名結(jié)果返回客戶端外,還包括:將客戶端當(dāng)前支持的對(duì)稱加密算法返回客戶端。
將客戶端簽名結(jié)果返回客戶端后,還包括:服務(wù)器選擇客戶端支持的安全性最高的對(duì)稱加密算法作為雙向認(rèn)證通信的加密算法,并使用客戶端證書(shū)公鑰對(duì)此加密算法進(jìn)行加密,并將加密結(jié)果發(fā)送給客戶端。
步驟406:當(dāng)接收到客戶端發(fā)送的解密請(qǐng)求時(shí),智能密鑰設(shè)備進(jìn)行解密,并將解密結(jié)果返回客戶端。
具體地,在本實(shí)施例中,將解密結(jié)果返回客戶端之后,還包括:客戶端根據(jù)加密算法,通過(guò)生產(chǎn)隨機(jī)數(shù)接口產(chǎn)生隨機(jī)數(shù)作為通信密鑰,并使用服務(wù)器證書(shū)公鑰加密發(fā)送給服務(wù)器,服務(wù)器接收到客戶端發(fā)送的加密結(jié)果后,通過(guò)解密接口使用服務(wù)器證書(shū)私鑰解密,獲得雙向認(rèn)證加密用的通信密鑰。
實(shí)施例六
本實(shí)施例提供了智能密鑰設(shè)備進(jìn)行交易時(shí)執(zhí)行的操作,包括:
步驟501:當(dāng)接收到服務(wù)器發(fā)送的獲取客戶端證書(shū)的請(qǐng)求時(shí),智能密鑰設(shè)備回送內(nèi)置的客戶端證書(shū)列表,客戶端證書(shū)列表包括證書(shū)索引;
步驟502:當(dāng)接收到使用客戶端證書(shū)簽名的請(qǐng)求時(shí),智能密鑰設(shè)備根據(jù)使用客戶端證書(shū)簽名的請(qǐng)求中包含的證書(shū)索引檢索證書(shū),根據(jù)檢索到的證書(shū)的屬性判斷客戶端證書(shū)為交易的證書(shū);
步驟502:當(dāng)接收到客戶端發(fā)送的密碼和驗(yàn)證請(qǐng)求時(shí),智能密鑰設(shè)備驗(yàn)證密碼是否正確,如果錯(cuò)誤,向客戶端返回錯(cuò)誤信息,如果正確,向客戶端返回正確信息,執(zhí)行步驟s5;
步驟503:當(dāng)接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求時(shí),智能密鑰設(shè)備判斷是否符合報(bào)文規(guī)范,是則所向客戶端返回錯(cuò)誤信息,執(zhí)行步驟504;否則向客戶端返回正確信息,執(zhí)行步驟505;
在本實(shí)施例中,在接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求之前,還包括:客戶端讀取智能密鑰設(shè)備序列號(hào),服務(wù)器驗(yàn)證用戶信息和智能密鑰設(shè)備序列號(hào)是否匹配,是則登陸成功,執(zhí)行步驟503,否則登錄失敗。
步驟504:智能密鑰設(shè)備解析客戶端簽名原文并顯示交易信息,用戶按鍵確認(rèn)后,待接收客戶端發(fā)送的簽名請(qǐng)求后,對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將客戶端簽名結(jié)果返回客戶端;
在本實(shí)施例中,將客戶端簽名結(jié)果返回客戶端后,還包括:客戶端將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器。
具體地,服務(wù)器接收到客戶端發(fā)送的信息后,對(duì)客戶端簽名原文進(jìn)行一次摘要運(yùn)算,并根據(jù)用戶信息和證書(shū)信息,比對(duì)當(dāng)前證書(shū)是否是此用戶綁定的證書(shū),如果不是,交易失敗;如果是,則服務(wù)器對(duì)簽名原文進(jìn)行摘要運(yùn)算并驗(yàn)證簽名是否成功,是則轉(zhuǎn)賬交易成功,否則轉(zhuǎn)賬交易失敗。
步驟505:智能密鑰設(shè)備解析客戶端簽名原文,待接收客戶端發(fā)送的簽名請(qǐng)求后,對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將簽名結(jié)果返回客戶端。
在本實(shí)施例中,將客戶端簽名結(jié)果返回客戶端后,還包括:客戶端將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器。
具體地,服務(wù)器接收到客戶端發(fā)送的信息后,對(duì)客戶端簽名原文進(jìn)行一次摘要運(yùn)算,并根據(jù)用戶信息和證書(shū)信息,比對(duì)當(dāng)前證書(shū)是否是此用戶綁定的證書(shū),如果不是,交易失??;如果是,則服務(wù)器對(duì)簽名原文進(jìn)行摘要運(yùn)算并驗(yàn)證簽名是否成功,是則轉(zhuǎn)賬交易成功,否則轉(zhuǎn)賬交易失敗。
實(shí)施例七
本實(shí)施例提供了一種實(shí)現(xiàn)智能密鑰設(shè)備雙向認(rèn)證和交易的裝置,如圖4所示,包括:
第一接收模塊601,用于接收服務(wù)器發(fā)送的獲取客戶端證書(shū)的請(qǐng)求;
回送模塊602,用于當(dāng)?shù)谝唤邮漳K601接收到服務(wù)器發(fā)送的獲取客戶端證書(shū)的請(qǐng)求時(shí),回送內(nèi)置的客戶端證書(shū)列表,客戶端證書(shū)列表包括證書(shū)索引;
第二接收模塊603,用于接收使用客戶端證書(shū)簽名的請(qǐng)求;
檢索模塊604,用于當(dāng)?shù)诙邮漳K603接收到使用客戶端證書(shū)簽名的請(qǐng)求時(shí),根據(jù)使用客戶端證書(shū)簽名的請(qǐng)求中包含的證書(shū)索引檢索證書(shū);
第一判斷模塊605,用于當(dāng)檢索模塊604檢索到證書(shū)時(shí),根據(jù)檢索到的證書(shū)的屬性判斷客戶端證書(shū)類(lèi)型;
運(yùn)算模塊606,用于當(dāng)?shù)谝慌袛嗄K605判斷客戶端證書(shū)類(lèi)型為雙向認(rèn)證的證書(shū)時(shí),對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將客戶端簽名結(jié)果返回客戶端;還用于當(dāng)顯示模塊611顯示交易信息后,用戶按鍵確認(rèn)后,對(duì)客戶端簽名原文進(jìn)行摘要和簽名運(yùn)算,并將客戶端簽名結(jié)果返回客戶端;
發(fā)送模塊607,用于將運(yùn)算模塊606得到的客戶端簽名結(jié)果發(fā)送至客戶端;
第三接收模塊608,用于當(dāng)?shù)谝慌袛嗄K605判斷客戶端證書(shū)類(lèi)型為交易的證書(shū)時(shí),接收客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求;
第二判斷模塊609,用于當(dāng)?shù)谌邮漳K608接收到客戶端發(fā)送的客戶端簽名原文和判斷請(qǐng)求時(shí),判斷客戶端簽名原文是否符合報(bào)文規(guī)范;
解析模塊610,用于當(dāng)?shù)诙袛嗄K609判斷客戶端簽名原文符合報(bào)文規(guī)范時(shí),還用于當(dāng)?shù)谒慕邮漳K612接收到客戶端發(fā)送的簽名請(qǐng)求時(shí),解析客戶端簽名原文;
顯示模塊611,用于顯示交易信息;
第四接收模塊612,用于當(dāng)?shù)诙袛嗄K609判斷客戶端簽名原文不符合報(bào)文規(guī)范時(shí),接收客戶端發(fā)送的簽名請(qǐng)求。
在本實(shí)施例中,裝置還包括:第五接收模塊、驗(yàn)證模塊、返回模塊和第六接收模塊;
第五接收模塊,用于接收客戶端發(fā)送的密碼和驗(yàn)證請(qǐng)求;
驗(yàn)證模塊,用于當(dāng)?shù)谖褰邮漳K接收到客戶端發(fā)送的密碼和驗(yàn)證請(qǐng)求時(shí),驗(yàn)證密碼是否正確;
返回模塊,用于當(dāng)驗(yàn)證模塊驗(yàn)證密碼錯(cuò)誤時(shí),向客戶端返回錯(cuò)誤信息;當(dāng)驗(yàn)證模塊驗(yàn)證密碼正確時(shí),向客戶端返回正確信息;
第六接收模塊,用于當(dāng)驗(yàn)證模塊驗(yàn)證密碼正確時(shí),等待接收到服務(wù)器發(fā)送的客戶端證書(shū)。
在本實(shí)施例中,裝置還包括:第三判斷模塊;
第三判斷模塊,用于判斷裝置自身是否鎖死;
驗(yàn)證模塊,還用于當(dāng)?shù)谌袛嗄K判斷裝置自身鎖死時(shí),打開(kāi)鎖重新驗(yàn)證密碼是否正確;
返回模塊,還用于當(dāng)?shù)谌袛嗄K判斷裝置自身鎖死時(shí),向客戶端返回錯(cuò)誤信息。
具體地,發(fā)送模塊607,具體用于:將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器。
具體地,返回裝置還用于:當(dāng)?shù)诙袛嗄K609判斷客戶端簽名原文符合報(bào)文規(guī)范時(shí),向客戶端返回錯(cuò)誤信息;當(dāng)?shù)诙袛嗄K609判斷客戶端簽名原文不符合報(bào)文規(guī)范時(shí),向客戶端返回正確信息,運(yùn)行運(yùn)算模塊606。
進(jìn)一步地,裝置還包括:第七接收模塊和作為模塊;
第七接收模塊,用于接收客戶端發(fā)送的摘要結(jié)果;
作為模塊,用于當(dāng)?shù)谄呓邮漳K接收到客戶端發(fā)送的摘要結(jié)果后,將摘要結(jié)果作為當(dāng)前客戶端簽名原文;
解析模塊610,還用于解析解析當(dāng)前客戶端簽名原文;
第二判斷模塊609,還用于判斷當(dāng)前客戶端簽名原文是否符合報(bào)文規(guī)范;
返回模塊,還用于當(dāng)?shù)诙袛嗄K609判斷當(dāng)前客戶端簽名原文符合報(bào)文規(guī)范時(shí),向客戶端返回錯(cuò)誤信息;當(dāng)?shù)诙袛嗄K609判斷當(dāng)前客戶端簽名原文不符合報(bào)文規(guī)范時(shí),向客戶端返回正確信息。
更進(jìn)一步地,裝置還包括:第八接收模塊;
第八接收模塊,用于接收客戶端發(fā)送的簽名請(qǐng)求。
具體地,發(fā)送模塊607,具體用于:將客戶端簽名原文、客戶端簽名結(jié)果和客戶端證書(shū)發(fā)送至服務(wù)器。
更具體地,發(fā)送模塊607,具體用于:將客戶端當(dāng)前支持的對(duì)稱加密算法返回所述客戶端。
再進(jìn)一步地,裝置還包括:第九接收模塊和解密模塊;
第九接收模塊,用于接收客戶端發(fā)送的解密請(qǐng)求;
解密模塊,用于當(dāng)?shù)诰沤邮漳K接收到客戶端發(fā)送的解密請(qǐng)求時(shí),對(duì)加密結(jié)果進(jìn)行解密,并將解密得到的加密算法返回客戶端。
具體地,在本實(shí)施例中,第一判斷模塊605,具體用于:根據(jù)證書(shū)的密鑰值判斷客戶端證書(shū)類(lèi)型。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明公開(kāi)的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。