亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法及裝置制造方法

文檔序號(hào):7769668閱讀:169來(lái)源:國(guó)知局
一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法及裝置制造方法
【專利摘要】本發(fā)明公開(kāi)一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法及裝置,該方法包括:當(dāng)智能密鑰設(shè)備接收到指令時(shí),判斷指令的類型,如為哈希指令則判斷哈希指令的類型,如為內(nèi)部哈希指令則從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)所述待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,給上位機(jī)返回成功信息,等待接收指令;如為外部哈希指令則當(dāng)計(jì)數(shù)器的值未達(dá)到預(yù)設(shè)值時(shí),從外部哈希指令中提取外部摘要值,對(duì)外部摘要值進(jìn)行簽名并將簽名結(jié)果返回給上位機(jī),更新計(jì)數(shù)器的值,等待接收指令;如為簽名指令則對(duì)保存的內(nèi)部摘要值進(jìn)行簽名并將簽名結(jié)果返回給上位機(jī)。本發(fā)明的計(jì)數(shù)器確定智能密鑰設(shè)備的生命周期,既保證了生產(chǎn)階段的預(yù)植速度,又提高了應(yīng)用階段簽名的安全性。
【專利說(shuō)明】一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法及裝置。
【背景技術(shù)】
[0002]智能密鑰設(shè)備的生命周期包括生產(chǎn)階段和使用階段;在生產(chǎn)階段中需要在生產(chǎn)環(huán)境下將數(shù)字證書(shū)下載到智能密鑰設(shè)備中(即預(yù)植過(guò)程),包括:生成密鑰對(duì)、生成下載證書(shū)請(qǐng)求、對(duì)下載證書(shū)請(qǐng)求進(jìn)行簽名、寫(xiě)入證書(shū);如果是雙證書(shū)預(yù)植,則還有加解密過(guò)程,其中對(duì)密鑰對(duì)進(jìn)行加密的密鑰是由CA生成的,"不落地"寫(xiě)到智能密鑰設(shè)備中。在使用階段中,當(dāng)智能密鑰設(shè)備接收到簽名指令時(shí),使用內(nèi)部存儲(chǔ)的私鑰進(jìn)行簽名,為了保證簽名的安全性,計(jì)算摘要值一般都是在設(shè)備內(nèi)進(jìn)行。且現(xiàn)有技術(shù)中,智能密鑰設(shè)備的生命周期的不同階段通過(guò)設(shè)置不同的標(biāo)記來(lái)實(shí)現(xiàn),需占用一定的存儲(chǔ)空間;而且不能很好的控制生產(chǎn)階段中的預(yù)植操作。

【發(fā)明內(nèi)容】

[0003]本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法及裝置。
[0004]本發(fā)明提供了一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法,包括:
[0005]本發(fā)明又提供了一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)裝置,包括:
[0006]本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn):
[0007]本發(fā)明方案中當(dāng)計(jì)數(shù)器里面的計(jì)數(shù)值達(dá)到了預(yù)設(shè)值時(shí)不能進(jìn)行外部哈希而只能進(jìn)行內(nèi)部哈希,通過(guò)計(jì)數(shù)器來(lái)限制外部哈希的次數(shù),實(shí)現(xiàn)了智能密鑰設(shè)備生命周期的轉(zhuǎn)換;在智能密鑰設(shè)備生產(chǎn)階段使用外部哈希可以預(yù)植過(guò)程的速度,而且在智能密鑰設(shè)備出廠后的應(yīng)用階段只能使用內(nèi)部哈希提高簽名的安全性;保證了在不同階段使用智能密鑰設(shè)備進(jìn)行簽名的安全性,很好的控制生產(chǎn)階段中的預(yù)植操作。
【專利附圖】

【附圖說(shuō)明】
[0008]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0009]圖1為本發(fā)明實(shí)施例一提供的一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法的流程圖;
[0010]圖2和圖3為本發(fā)明實(shí)施例二提供的一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法的流程圖;
[0011]圖4為本發(fā)明實(shí)施例三提供的一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法的流程圖;
[0012]圖5和圖6為本發(fā)明實(shí)施例四提供的一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法的流程圖;
[0013]圖7為本發(fā)明實(shí)施例五提供的一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)裝置的方框圖;
[0014]圖8為本發(fā)明實(shí)施例六提供的一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)裝置的方框圖。
【具體實(shí)施方式】
[0015]下面將結(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ù)的范圍。
[0016]實(shí)施例一
[0017]本發(fā)明實(shí)施例一提供一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法,如圖1所示,包括:
[0018]步驟101:智能設(shè)備上電,進(jìn)行初始化;
[0019]步驟102:等待接收上位機(jī)下發(fā)的指令;
[0020]步驟103:當(dāng)接收到指令時(shí),判斷接收到的指令的類型,如為哈希指令則執(zhí)行步驟106,如為簽名指令則執(zhí)行步驟104,如為其他指令則根據(jù)接收到的指令進(jìn)行操作并將操作結(jié)果返回給上位機(jī),返回步驟102 ;
[0021]在本實(shí)施例中,判斷指令的類型具體為:判斷指令中第三字節(jié)上的數(shù)據(jù),如為第一預(yù)設(shè)數(shù)據(jù)則為哈希指令,如為第二預(yù)設(shè)數(shù)據(jù)則為簽名指令;具體的,本實(shí)施例中的第一預(yù)設(shè)數(shù)據(jù)為0x90,第二預(yù)設(shè)數(shù)據(jù)為0x9e ;
[0022]步驟104:判斷簽名算法和用戶私鑰是否有效,是則執(zhí)行步驟105,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟102;
[0023]具體的,判斷簽名算法是否有效為:判斷簽名算法標(biāo)志是否置位,是則簽名算法有效,否則簽名算法無(wú)效;優(yōu)選的,簽名算法為SM2算法;
[0024]判斷用戶私鑰是否有效為:判斷是否定位了有效用戶私鑰,是則用戶私鑰有效,否則用戶私鑰無(wú)效;
[0025]步驟105:根據(jù)有效簽名算法使用有效用戶私鑰對(duì)所述保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回上位機(jī),返回步驟102 ;
[0026]本實(shí)施例中,步驟105中在將簽名結(jié)果返回給上位機(jī)后還包括:給上位機(jī)返回簽名成功信息;
[0027]步驟106:根據(jù)接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則執(zhí)行步驟107,如為外部哈希指令則執(zhí)行步驟109 ;
[0028]在本實(shí)施例中,步驟106具體為:判斷哈希指令中的第四字節(jié)上的數(shù)據(jù),如為第三預(yù)設(shè)數(shù)據(jù)則為內(nèi)部哈希指令,如為第四預(yù)設(shè)數(shù)據(jù)則為外部哈希指令;具體的,第三預(yù)設(shè)數(shù)據(jù)為0x80,第四預(yù)設(shè)數(shù)據(jù)為0x81 ;[0029]步驟107:判斷哈希算法是否有效,是則執(zhí)行步驟108,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟102 ;
[0030]具體的,判斷哈希算法是否有效為:判斷哈希算法標(biāo)志是否置位,是則哈希算法有效,否則哈希算法無(wú)效;優(yōu)選的,哈希算法為SM3算法或SHA256算法;
[0031]步驟108:從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),根據(jù)有效哈希算法對(duì)所述待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,給上位機(jī)返回成功信息,返回步驟102 ;
[0032]本實(shí)施例中,提取待簽名數(shù)據(jù)具體為:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù);優(yōu)選的,預(yù)設(shè)字節(jié)為第五字節(jié);
[0033]具體的,本實(shí)施例中計(jì)算得到內(nèi)部摘要值有兩種實(shí)現(xiàn)方式,
[0034]第一種方式為:接收到全部的待簽名數(shù)據(jù)后再進(jìn)行計(jì)算得到內(nèi)部摘要值,步驟107和步驟108替換為:
[0035]步驟ell:判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟el4,否則執(zhí)行步驟el2;
[0036]在本實(shí)施例中,步驟ell具體為:判斷內(nèi)部哈希指令中第一字節(jié)上的數(shù)據(jù)是否為第五預(yù)設(shè)數(shù)據(jù),是則為最后一包數(shù)據(jù),否則不是最后一包數(shù)據(jù),具體的,第五預(yù)設(shè)數(shù)據(jù)為0x00 ;
[0037]步驟el2:判斷哈希算法是否有效,是則執(zhí)行步驟el3,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟102 ;
[0038]步驟el3:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,給上位機(jī)返回成功信息,返回步驟102 ;
[0039]步驟el4:判斷哈希算法是否有效,是則執(zhí)行步驟el5,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟102 ;
[0040]步驟el5:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,根據(jù)有效哈希算法對(duì)所述緩存區(qū)中的待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,給上位機(jī)返回成功信息,返回步驟102。
[0041]第二種方式為:接收到一條指令后提取待簽名數(shù)據(jù),然后對(duì)待簽名數(shù)據(jù)分包,對(duì)第一包數(shù)據(jù)進(jìn)行計(jì)算得到中間摘要值,再根據(jù)中間摘要值和第二包數(shù)據(jù)計(jì)算,依次類推,直到計(jì)算完本條指令中分包得到的最后一個(gè)完整的數(shù)據(jù)包,將中間摘要值和分包得到的非完整的數(shù)據(jù)包保存,在接收到下一條指令后提取待簽名數(shù)據(jù),根據(jù)保存的非完整數(shù)據(jù)包和待簽名數(shù)據(jù),再分包計(jì)算,直到接收到最后一條包含待簽名數(shù)據(jù)的內(nèi)部哈希指令,包括:
[0042]步驟e21:判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟e26,否則執(zhí)行步驟e22 ;
[0043]步驟e22:判斷哈希算法是否有效,是則執(zhí)行步驟e23,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟102 ;
[0044]步驟e23:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,根據(jù)有效哈希算法對(duì)分包得到的第一個(gè)數(shù)據(jù)包進(jìn)行哈希得到中間摘要值,保存中間摘要值和分包得到的非完整的數(shù)據(jù)包;
[0045]如果此時(shí)接收到的內(nèi)部哈希指令中的數(shù)據(jù)為第一個(gè)待簽名數(shù)據(jù)包,則步驟e23中直接對(duì)待簽名數(shù)據(jù)進(jìn)行分包;
[0046]步驟e24:判斷是否處理完所有的分包得到的完整的數(shù)據(jù)包,是則給上位機(jī)返回成功信息,返回步驟102,否則執(zhí)行步驟e25 ;
[0047]步驟e25:將分包得到的下一個(gè)完整的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算,并用計(jì)算結(jié)果更新中間摘要值,返回步驟e24;
[0048]步驟e26:判斷哈希算法是否有效,是則執(zhí)行步驟e27,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟102 ;
[0049]步驟e27:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,對(duì)保存的中間摘要值和分包得到的第一包數(shù)據(jù)進(jìn)行計(jì)算,并用計(jì)算結(jié)果更新中間摘要值;
[0050]步驟e28:判斷是否處理完所有的分包得到的數(shù)據(jù)包,是則將保存中的中間摘要值作為內(nèi)部摘要值,給上位機(jī)返回成功信息,返回步驟102,否則執(zhí)行步驟e29 ;
[0051]步驟e29:將分包得到的下一個(gè)數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值,返回步驟e28 ;
[0052]本實(shí)施例中以第二種實(shí)現(xiàn)方式為例進(jìn)行說(shuō)明,例如,存儲(chǔ)包的大小為64字節(jié),當(dāng)?shù)谝淮谓邮盏絻?nèi)部哈希指令時(shí),步驟e23中提取到待簽名數(shù)據(jù)后將其按照64字節(jié)進(jìn)行分包處理,根據(jù)有效哈希算法對(duì)第一包數(shù)據(jù)計(jì)算得到中間摘要值,再根據(jù)有效哈希算法對(duì)第二
包數(shù)據(jù)和中間摘要值計(jì)算并用計(jì)算結(jié)果更新中間摘要值......如最后一包不足64字節(jié),
則在根據(jù)有效哈希算法對(duì)倒數(shù)第二包數(shù)據(jù)和中間摘要值計(jì)算,并用計(jì)算結(jié)果更新中間摘要值,保存最后一個(gè)不足64字節(jié)的數(shù)據(jù)包和中間摘要值;在接收到下一條內(nèi)部哈希指令時(shí),將步驟e23提取到待簽名數(shù)據(jù)先將其存儲(chǔ)到保存的非完整的數(shù)據(jù)包中,再將剩余待簽名數(shù)據(jù)按64字節(jié)進(jìn)行分包,再計(jì)算中間摘要值,以此類推,直到接收到包含待簽名數(shù)據(jù)的最后一包數(shù)據(jù)的內(nèi)部哈希指令時(shí),在步驟e27中提取到待簽名數(shù)據(jù)后首先將其存儲(chǔ)到保存的非完整數(shù)據(jù)包中,再將剩余待簽名數(shù)據(jù)按64字節(jié)分包,根據(jù)哈希算法對(duì)中間摘要值和第一個(gè)
數(shù)據(jù)包進(jìn)行計(jì)算,用計(jì)算結(jié)果更新中間摘要值......直到最后一個(gè)數(shù)據(jù)包時(shí),根據(jù)哈希算
法對(duì)中間摘要值和最后一個(gè)數(shù)據(jù)包進(jìn)行計(jì)算得到內(nèi)部摘要值。本實(shí)施例中,可以按照任意長(zhǎng)度進(jìn)行分包處理,以便提高簽名效率;
[0053]步驟109:判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,返回步驟102,否則執(zhí)行步驟110;
[0054]步驟110:判斷簽名算法和用戶私鑰是否有效,是則執(zhí)行步驟111,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟102;
[0055]步驟111:從外部哈希指令中提取外部摘要值,根據(jù)有效簽名算法使用有效用戶私鑰對(duì)外部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),更新計(jì)數(shù)器的值,返回步驟 102 ;
[0056]本實(shí)施例中,步驟111中在將簽名結(jié)果返回給上位機(jī)后還包括:給上位機(jī)返回簽名成功信息;
[0057]具體的,在本實(shí)施例中,更新計(jì)數(shù)器的值的方法可以為遞增或遞減;如計(jì)數(shù)器的初始值為0,則采用遞增方式更新計(jì)數(shù)器的值;如計(jì)數(shù)器的初始值為N (N為非O正整數(shù)),則采用遞減方式更新計(jì)數(shù)器的值;[0058]在本實(shí)施例中,計(jì)數(shù)器的初始值通過(guò)上位機(jī)下發(fā)的指令來(lái)設(shè)置,上位機(jī)在發(fā)送簽名指令之前先給智能密鑰設(shè)備發(fā)送設(shè)置計(jì)數(shù)器指令,智能密鑰設(shè)備接收到設(shè)置計(jì)數(shù)器指令時(shí)設(shè)置計(jì)數(shù)器的初始值(O或非O正整數(shù)N)。
[0059]本實(shí)施例中的有效哈希算法、有效簽名算法和有效用戶私鑰可以預(yù)先設(shè)置,也可以通過(guò)上位機(jī)下發(fā)的指令來(lái)設(shè)置。具體的,在本實(shí)施例中,是通過(guò)上位機(jī)下發(fā)指令來(lái)設(shè)置的,則本實(shí)施例的方法還包括:如果步驟103中接收到設(shè)置算法指令,則執(zhí)行步驟S1-步驟s6 ;
[0060]步驟S1:從所述設(shè)置算法指令中獲取參數(shù),并判斷參數(shù)是否正確,是則執(zhí)行步驟s2,否則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟102 ;
[0061]在本實(shí)施例中,判斷參數(shù)是否正確具體為:判斷設(shè)置算法指令中的第一預(yù)設(shè)位置上的數(shù)據(jù)是否為第一預(yù)設(shè)數(shù)據(jù)串,是則正確,否則不正確;具體的,第一預(yù)設(shè)位置為設(shè)置算法指令中的第三字節(jié)和第四字節(jié),第一預(yù)設(shè)數(shù)據(jù)串為0x410xb6 ;
[0062]步驟s2:根據(jù)設(shè)置算法指令判斷是否支持哈希算法,是則執(zhí)行步驟S3,否則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟102 ;
[0063]優(yōu)選的,本實(shí)施例中的哈希算法為SM3算法或SHA256算法;
[0064]在本實(shí)施例中步驟s2包括:判斷接收到的設(shè)置算法指令的數(shù)據(jù)域中的第一預(yù)設(shè)位置上的數(shù)據(jù)是否為第一預(yù)設(shè)字符,是則支持,否則不支持;具體的,設(shè)置算法指令的數(shù)據(jù)域中的第一預(yù)設(shè)位置為數(shù)據(jù)域的第三字節(jié),第一預(yù)設(shè)字符具體為0x52或0xf2,如為0x52時(shí)則表示支持SM3算法,如為0xf2則表示支持SHA256算法;
[0065]步驟s3:設(shè)置有效哈希算法;
[0066]在本實(shí)施例中,有效哈希算法具體為SM3算法,步驟s3具體為:將SM3算法標(biāo)志置位;
[0067]步驟s4:根據(jù)設(shè)置算法指令判斷是否支持簽名算法,是則執(zhí)行步驟s5,否則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟102 ;
[0068]在本實(shí)施例中,簽名算法為SM2算法;
[0069]具體的,在本實(shí)施例中,步驟s4包括:判斷接收到的指令的數(shù)據(jù)域中的第第二預(yù)設(shè)位置上的數(shù)據(jù)是否為第二預(yù)設(shè)數(shù)據(jù)串,是則支持,否則不支持;本實(shí)施例中的第二預(yù)設(shè)位置為設(shè)置算法在指令的數(shù)據(jù)域中的六字節(jié)和第七字節(jié),第二預(yù)設(shè)數(shù)據(jù)串為0X0d0X13 ;
[0070]步驟s5:設(shè)置有效簽名算法;
[0071 ] 在本實(shí)施例中,步驟s5具體為:將SM2算法標(biāo)志置位;
[0072]本實(shí)施例中,簽名算法標(biāo)志和哈希算法標(biāo)志置位表示對(duì)應(yīng)的簽名算法和哈希算法有效;
[0073]本實(shí)施例中的步驟S1、步驟s2_步驟s3、步驟s4_步驟s5的順序可調(diào)換;
[0074]步驟s6:根據(jù)密鑰ID和用途信息定位對(duì)應(yīng)的密鑰文件中的有效用戶私鑰,給上位機(jī)返回成功響應(yīng),返回步驟102 ;
[0075]本實(shí)施例中的密鑰ID和用途信息可以是預(yù)先通過(guò)一條指令來(lái)獲取得到或者從設(shè)置算法指令的數(shù)據(jù)域中獲取得到,優(yōu)選的,本實(shí)施例中是從設(shè)置算法指令的數(shù)據(jù)域中獲取得到的。
[0076]本實(shí)施中,在生產(chǎn)階段中只需第一次進(jìn)行簽名前對(duì)用戶身份進(jìn)行驗(yàn)證,即在步驟Ill中進(jìn)行簽名之前還包括:判斷是否驗(yàn)證過(guò)PIN碼,是則執(zhí)行步驟111,否則執(zhí)行驗(yàn)PIN碼操作,繼續(xù)執(zhí)行步驟111 ;
[0077]在應(yīng)用階段中每次簽名前都需對(duì)用戶身份進(jìn)行驗(yàn)證,在步驟105之前還包括:執(zhí)行驗(yàn)PIN碼操作,執(zhí)行步驟105 ;
[0078]具體的,執(zhí)行驗(yàn)PIN碼操作為:判斷接收到的用戶輸入的PIN碼是否與內(nèi)部存儲(chǔ)的PIN碼一致,是則繼續(xù),否則給上位機(jī)返回錯(cuò)誤信息,結(jié)束。
[0079]本實(shí)施例一中的方法在COS層設(shè)計(jì)一個(gè)計(jì)數(shù)器,該計(jì)數(shù)器用以計(jì)數(shù)設(shè)備外的哈希次數(shù)。當(dāng)計(jì)數(shù)器的值小于預(yù)設(shè)值時(shí),智能密鑰設(shè)備處于生產(chǎn)階段,當(dāng)計(jì)數(shù)器的值達(dá)到預(yù)設(shè)值時(shí),智能密鑰設(shè)備處于應(yīng)用階段,配合生產(chǎn)流程使用該計(jì)數(shù)器,以便切換智能密鑰設(shè)備的生命周期轉(zhuǎn)換。在生產(chǎn)階段支持在設(shè)備外進(jìn)行哈希計(jì)算在設(shè)備內(nèi)進(jìn)行簽名,提高了預(yù)植速度;而在出廠之后的應(yīng)用階段,哈希計(jì)算和簽名計(jì)算均在設(shè)備內(nèi)執(zhí)行,提高了數(shù)據(jù)簽名的安全性;通過(guò)計(jì)數(shù)器即可以實(shí)現(xiàn)哈希計(jì)算在設(shè)備內(nèi)進(jìn)行又可以實(shí)現(xiàn)哈希計(jì)算在設(shè)備外進(jìn)行,保證了使用智能密鑰設(shè)備進(jìn)行簽名的安全性,并且能明確確定智能密鑰設(shè)備的生產(chǎn)階段。
[0080]實(shí)施例二
[0081]本發(fā)明實(shí)施例二提供一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法,在生產(chǎn)階段接收到內(nèi)部哈希指令時(shí)對(duì)提取的待簽名數(shù)據(jù)進(jìn)行分包進(jìn)行計(jì)算得到的內(nèi)部摘要值,且外部哈希是通過(guò)一條指令來(lái)實(shí)現(xiàn)的,如圖2和圖3所示,包括:
[0082]步驟201:智能設(shè)備上電,進(jìn)行初始化;
[0083]步驟202:等待接收上位機(jī)下發(fā)的指令;
[0084]步驟203:當(dāng)接收到指令時(shí),判斷接收到的指令的類型,如為哈希指令則執(zhí)行步驟206,如為簽名指令則執(zhí)行步驟204,如為其他指令則根據(jù)接收到的指令進(jìn)行操作并將操作結(jié)果返回給上位機(jī),返回步驟202 ;
[0085]步驟204:判斷簽名算法和用戶私鑰是否有效,是則執(zhí)行步驟205,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟202;
[0086]步驟205:根據(jù)有效簽名算法使用有效用戶私鑰對(duì)所述保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回上位機(jī),返回步驟202 ;
[0087]本實(shí)施例中,步驟205中在將簽名結(jié)果返回給上位機(jī)后還包括:給上位機(jī)返回簽名成功信息;
[0088]步驟206:根據(jù)接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則執(zhí)行步驟207,如為外部哈希指令則執(zhí)行步驟216 ;
[0089]步驟207:判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟212,否則執(zhí)行步驟208 ;
[0090]步驟208:判斷哈希算法是否有效,是則執(zhí)行步驟209,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟202 ;
[0091]步驟209:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,根據(jù)有效哈希算法對(duì)分包得到的第一個(gè)數(shù)據(jù)包進(jìn)行哈希得到中間摘要值,保存中間摘要值和分包得到的非完整的數(shù)據(jù)包;
[0092]在本實(shí)施例中,如果此時(shí)接收到的內(nèi)部哈希指令為第一個(gè)數(shù)據(jù)包的指令,則步驟209中直接對(duì)待簽名數(shù)據(jù)進(jìn)行分包;
[0093]步驟210:判斷是否處理完所有的分包得到的完整的數(shù)據(jù)包,是則給上位機(jī)返回成功信息,返回步驟202,否則執(zhí)行步驟211 ;
[0094]步驟211:將分包得到的下一個(gè)完整的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值,返回步驟210 ;
[0095]步驟212:判斷哈希算法是否有效,是則執(zhí)行步驟213,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟202 ;
[0096]步驟213:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,對(duì)保存的中間摘要值和分包得到的第一包數(shù)據(jù)進(jìn)行并用計(jì)算結(jié)果更新中間摘要值;
[0097]步驟214:判斷是否處理完所有的分包得到的數(shù)據(jù)包,是則將保存中的中間摘要值作為內(nèi)部摘要值,給上位機(jī)返回成功信息,返回步驟202,否則執(zhí)行步驟215 ;
[0098]步驟215:將分包得到的下一個(gè)數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值,返回步驟214 ;
[0099]步驟216:判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,返回步驟202,否則執(zhí)行步驟217 ;
[0100]在本實(shí)施例中,如計(jì)數(shù)器的初始值為0,則步驟216為:判斷當(dāng)前計(jì)數(shù)器的值是否為N,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟202,否則執(zhí)行步驟217 ;如計(jì)數(shù)器的初始值為N,則步驟216為:判斷當(dāng)前計(jì)數(shù)器的值是否為0,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟202,否則執(zhí)行步驟217 ;
[0101]步驟217:判斷簽名算法和用戶私鑰是否有效,是則執(zhí)行步驟218,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟202;
[0102]步驟218:從外部哈希指令中提取外部摘要值,根據(jù)有效簽名算法使用有效用戶私鑰對(duì)外部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),更新計(jì)數(shù)器的值,返回步驟 202 ;
[0103]本實(shí)施例中,步驟218中在將簽名結(jié)果返回給上位機(jī)后還包括:給上位機(jī)返回簽名成功信息;
[0104]在本實(shí)施例中,更新計(jì)數(shù)器的值的實(shí)現(xiàn)方案可參考實(shí)施例一,在此不再贅述。
[0105]在本實(shí)現(xiàn)方案中,有效哈希算法、有效簽名算法和有效用戶私鑰可以預(yù)先設(shè)置,也可以通過(guò)上位機(jī)下發(fā)的指令來(lái)設(shè)置,具體參考實(shí)施例一。
[0106]本實(shí)施中,在生產(chǎn)階段的預(yù)植過(guò)程中第一次執(zhí)行簽名之前還可對(duì)用戶輸入的PIN碼進(jìn)行驗(yàn)證,即在步驟218中進(jìn)行簽名之前還包括:判斷是否驗(yàn)證過(guò)PIN碼,是則進(jìn)行,否則執(zhí)行驗(yàn)PIN碼操作,繼續(xù);
[0107]在應(yīng)用階段是每次簽名之前都可對(duì)用戶輸入的PIN碼進(jìn)行驗(yàn)證,即步驟205之前還包括:執(zhí)行驗(yàn)PIN碼操作,執(zhí)行步驟205 ;
[0108]具體的,執(zhí)行驗(yàn)PIN碼操作為:判斷接收到的用戶輸入的PIN碼是否與內(nèi)部存儲(chǔ)的PIN碼一致,是則繼續(xù),否則給上位機(jī)返回錯(cuò)誤信息,結(jié)束。
[0109]本實(shí)施例二中的方法在COS層設(shè)計(jì)一個(gè)計(jì)數(shù)器,該計(jì)數(shù)器用以計(jì)數(shù)外部哈希的次數(shù)。當(dāng)計(jì)數(shù)器的值小于預(yù)設(shè)值時(shí),智能密鑰設(shè)備處于生產(chǎn)階段,當(dāng)計(jì)數(shù)器的值達(dá)到預(yù)設(shè)值時(shí),智能密鑰設(shè)備處于應(yīng)用階段,配合生產(chǎn)流程使用該計(jì)數(shù)器,以便切換智能密鑰設(shè)備的生命周期轉(zhuǎn)換。在生產(chǎn)階段支持在設(shè)備外進(jìn)行哈希計(jì)算在設(shè)備內(nèi)進(jìn)行簽名,提高了預(yù)植速度;在出廠之后的應(yīng)用階段,哈希計(jì)算和簽名計(jì)算均在設(shè)備內(nèi)執(zhí)行,提高了數(shù)據(jù)簽名的安全性;通過(guò)計(jì)數(shù)器即可以實(shí)現(xiàn)哈希計(jì)算在設(shè)備內(nèi)進(jìn)行又可以實(shí)現(xiàn)哈希計(jì)算在設(shè)備外進(jìn)行,保證了使用智能密鑰設(shè)備進(jìn)行簽名的安全性,并且能明確確定智能密鑰設(shè)備的生產(chǎn)階段。在應(yīng)用階段,通過(guò)分包存儲(chǔ)待簽名數(shù)據(jù)并對(duì)每包進(jìn)行計(jì)算得到內(nèi)部摘要,可提高簽名效率。
[0110]實(shí)施例三
[0111]本發(fā)明實(shí)施例三提供一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法,在簽名之前需驗(yàn)證PIN碼,且外部哈希是通過(guò)一條指令來(lái)實(shí)現(xiàn)的,如圖4所示,包括:
[0112]步驟301:智能設(shè)備上電,進(jìn)行初始化;
[0113]在本實(shí)施例中,進(jìn)行初始化包括設(shè)置計(jì)數(shù)器的初始值,復(fù)位驗(yàn)碼標(biāo)志,將簽名標(biāo)識(shí)的值設(shè)為O;
[0114]步驟302:等待接收上位機(jī)下發(fā)的指令;
[0115]步驟303:當(dāng)接收到指令時(shí),判斷接收到的指令的類型,如為哈希指令則執(zhí)行步驟310,如為簽名指令則執(zhí)行步驟304,如為其他指令則根據(jù)接收到的指令進(jìn)行操作并將操作結(jié)果返回給上位機(jī),返回步驟302 ;
[0116]在本實(shí)施例中,判斷指令的類型具體為:判斷指令中第三字節(jié)上的數(shù)據(jù),如為第一預(yù)設(shè)數(shù)據(jù)則為哈希指令,如為第二預(yù)設(shè)數(shù)據(jù)則為簽名指令;具體的,本實(shí)施例中的第一預(yù)設(shè)數(shù)據(jù)為0x90,第二預(yù)設(shè)數(shù)據(jù)為0x9e ;
[0117]步驟304:判斷簽名標(biāo)識(shí)的值,如為第一預(yù)設(shè)值則執(zhí)行步驟305 ;如為第二預(yù)設(shè)值則執(zhí)行步驟307,如為其他值則返回錯(cuò)誤信息,返回步驟302 ;
[0118]步驟305:判斷簽名算法和用戶私鑰是否有效,是則執(zhí)行步驟306,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟302;
[0119]具體的,判斷簽名算法是否有效為:判斷簽名算法標(biāo)志是否置位,是則簽名算法有效,否則簽名算法無(wú)效;優(yōu)選的,簽名算法為SM2算法;
[0120]判斷用戶私鑰是否有效為:判斷是否定位了有效用戶私鑰,是則用戶私鑰有效,否則用戶私鑰無(wú)效;
[0121]步驟306:根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),將簽名標(biāo)識(shí)的值清零,返回步驟302 ;
[0122]本實(shí)施例中,步驟306中在將簽名結(jié)果返回給上位機(jī)后還包括:給上位機(jī)返回簽名成功信息;
[0123]步驟307:判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,返回步驟302,否則執(zhí)行步驟308 ;
[0124]步驟308:判斷簽名算法和用戶私鑰是否有效,是則執(zhí)行步驟309 ;否則給上位機(jī)返回錯(cuò)誤信息,返回步驟302;
[0125]在本實(shí)施例中,步驟307和步驟308沒(méi)有先后順序,優(yōu)選的本實(shí)施例中先執(zhí)行步驟307再執(zhí)行步驟308 ;
[0126]步驟309:根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的外部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),更新計(jì)數(shù)器的值,將簽名標(biāo)識(shí)的值清零,返回步驟302 ;[0127]本實(shí)施例中更新計(jì)數(shù)器的值的方法有多種實(shí)現(xiàn)方法,具體的可參照實(shí)施例一中的實(shí)現(xiàn)方法;
[0128]步驟310:根據(jù)接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則執(zhí)行步驟311,如為外部哈希指令則執(zhí)行步驟314 ;
[0129]在本實(shí)施例中,步驟310具體為:判斷哈希指令中的第四字節(jié)上的數(shù)據(jù),如為第三預(yù)設(shè)數(shù)據(jù)則為內(nèi)部哈希指令,如為第四預(yù)設(shè)數(shù)據(jù)則為外部哈希指令;具體的,第三預(yù)設(shè)數(shù)據(jù)為0x80,第四預(yù)設(shè)數(shù)據(jù)為0x81 ;
[0130]步驟311:判斷簽名標(biāo)識(shí)的值是否為第二預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟302,否則執(zhí)行步驟312 ;
[0131]步驟312:判斷哈希算法是否有效,是則執(zhí)行步驟313,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟302 ;
[0132]具體的,判斷哈希算法是否有效為:判斷哈希算法標(biāo)志是否置位,是則哈希算法有效,否則哈希算法無(wú)效;優(yōu)選的,哈希算法為SM3算法或SHA256算法;
[0133]步驟313:從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),根據(jù)有效哈希算法對(duì)所述待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,給上位機(jī)返回成功信息,返回步驟302 ;
[0134]本實(shí)施例中,步驟313中計(jì)算得到摘要的方式有兩種方式;第一種方式包括步驟ell-步驟 el5 ;
[0135]步驟ell:判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟el4,否則執(zhí)行步驟el2;
[0136]在本實(shí)施例中,步驟ell具體為:判斷計(jì)算簽名指令中第一字節(jié)上的數(shù)據(jù)是否為第五預(yù)設(shè)數(shù)據(jù),是則為最后一包數(shù)據(jù),否則不是最后一包數(shù)據(jù),具體的,第五預(yù)設(shè)數(shù)據(jù)為0x00 ;
[0137]步驟el2:判斷哈希算法是否有效,是則執(zhí)行步驟el3,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟302 ;
[0138]步驟el3:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,給上位機(jī)返回成功信息,返回步驟302 ;
[0139]步驟el4:判斷哈希算法是否有效,是則執(zhí)行步驟el5,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟302 ;
[0140]步驟el5:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,根據(jù)有效哈希算法對(duì)所述緩存區(qū)中的待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,給上位機(jī)返回成功信息,返回步驟302 ;
[0141]第二種方式包括步驟e21_步驟e29 ;
[0142]步驟e21:判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟e26,否則執(zhí)行步驟e22 ;
[0143]步驟e22:判斷哈希算法是否有效,是則執(zhí)行步驟e23,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟302 ;
[0144]步驟e23:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,根據(jù)有效哈希算法對(duì)分包得到的第一個(gè)數(shù)據(jù)包進(jìn)行哈希得到中間摘要值,保存中間摘要值和分包得到的非完整的數(shù)據(jù)包;
[0145]步驟e24:判斷是否處理完所有的分包得到的完整的數(shù)據(jù)包,是則給上位機(jī)返回成功信息,返回步驟302,否則執(zhí)行步驟e25 ;
[0146]步驟e25:將分包得到的下一個(gè)完整的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值,返回步驟e24 ;
[0147]步驟e26:判斷哈希算法是否有效,是則執(zhí)行步驟e27,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟302 ;
[0148]步驟e27:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,對(duì)保存的中間摘要值和分包得到的第一包數(shù)據(jù)進(jìn)行并用計(jì)算結(jié)果更新中間摘要值;
[0149]步驟e28:判斷是否處理完所有的分包得到的數(shù)據(jù)包,是則將保存中的中間摘要值作為內(nèi)部摘要值,給上位機(jī)返回成功信息,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,返回步驟302,否則執(zhí)行步驟e29 ;
[0150]步驟e29:將分包得到的下一個(gè)數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值,返回步驟e28 ;
[0151]步驟314:判斷簽名標(biāo)識(shí)的值是否為第一預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟302,否則執(zhí)行步驟315 ;
[0152]步驟315:從外部哈希指令中提取外部摘要值并保存,給上位機(jī)返回成功信息,將簽名標(biāo)識(shí)的值設(shè)為第二預(yù)設(shè)值,返回步驟302。
[0153]本實(shí)施例中的有效哈希算法、有效簽名算法和有效用戶私鑰可以預(yù)先設(shè)置,也可以通過(guò)上位機(jī)下發(fā)的指令來(lái)設(shè)置。具體的,在本實(shí)施例中,是通過(guò)上位機(jī)下發(fā)指令來(lái)設(shè)置的,則本實(shí)施例的方法還包括:如果步驟303中接收到設(shè)置算法指令,則執(zhí)行步驟S1-步驟s6 ;
[0154]步驟S1:從所述設(shè)置算法指令中獲取參數(shù),并判斷參數(shù)是否正確,是則執(zhí)行步驟s2,否則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟302 ;
[0155]在本實(shí)施例中,判斷參數(shù)是否正確具體為:判斷設(shè)置算法指令中的第一預(yù)設(shè)位置上的數(shù)據(jù)是否為第一預(yù)設(shè)數(shù)據(jù)串,是則正確,否則不正確;具體的,第一預(yù)設(shè)位置為設(shè)置算法指令中的第三字節(jié)和第四字節(jié),第一預(yù)設(shè)數(shù)據(jù)串為0x410xb6 ;
[0156]步驟s2:根據(jù)設(shè)置算法指令判斷是否支持哈希算法,是則執(zhí)行步驟S3,否則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟302 ;
[0157]優(yōu)選的,本實(shí)施例中的哈希算法為SM3算法或SHA256算法;
[0158]在本實(shí)施例中步驟s2包括:判斷接收到的設(shè)置算法指令的數(shù)據(jù)域中的第一預(yù)設(shè)位置上的數(shù)據(jù)是否為第一預(yù)設(shè)字符,是則支持,否則不支持;具體的,設(shè)置算法指令的數(shù)據(jù)域中的第一預(yù)設(shè)位置為數(shù)據(jù)域的第三字節(jié),第一預(yù)設(shè)字符具體為0x52或0xf2,如為0x52時(shí)則表示支持SM3算法,如為0xf2則表示支持SHA256算法;
[0159]步驟s3:設(shè)置有效哈希算法;
[0160]在本實(shí)施例中,有效哈希算法具體為SM3算法,步驟s3具體為:將SM3算法標(biāo)志置位;
[0161]步驟s4:根據(jù)設(shè)置算法指令判斷是否支持簽名算法,是則執(zhí)行步驟s5,否則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟302 ;
[0162]在本實(shí)施例中,簽名算法為SM2算法;
[0163]具體的,在本實(shí)施例中,步驟s4包括:判斷接收到的指令的數(shù)據(jù)域中的第第二預(yù)設(shè)位置上的數(shù)據(jù)是否為第二預(yù)設(shè)數(shù)據(jù)串,是則支持,否則不支持;第二預(yù)設(shè)位置為設(shè)置算法指令的數(shù)據(jù)域中的第六字節(jié)和第七字節(jié),第二預(yù)設(shè)數(shù)據(jù)串為0X0d0X13 ;
[0164]步驟s5:設(shè)置有效簽名算法;
[0165]在本實(shí)施例中,步驟s5具體為:將SM2算法標(biāo)志置位;
[0166]本實(shí)施例中,簽名算法標(biāo)志和哈希算法標(biāo)志置位表示對(duì)應(yīng)的簽名算法和哈希算法有效;
[0167]本實(shí)施例中的步驟S1、步驟s2_步驟s3、步驟s4_步驟s5的順序可調(diào)換;
[0168]步驟s6:根據(jù)密鑰ID和用途信息定位對(duì)應(yīng)的密鑰文件中的有效用戶私鑰,給上位機(jī)返回成功響應(yīng),返回步驟302 ;
[0169]本實(shí)施例中的密鑰ID和用途信息可以是預(yù)先通過(guò)一條指令來(lái)獲取得到或者從設(shè)置算法指令的數(shù)據(jù)域中獲取得到,優(yōu)選的,本實(shí)施例中是從設(shè)置算法指令的數(shù)據(jù)域中獲取得到的。
[0170]本實(shí)施中,在生產(chǎn)階段中只需第一進(jìn)行簽名前對(duì)用戶身份進(jìn)行驗(yàn)證,即在步驟309之前還包括:判斷是否驗(yàn)證過(guò)PIN碼,是則執(zhí)行步驟309,否則執(zhí)行驗(yàn)PIN碼操作,繼續(xù)執(zhí)行步驟309 ;
[0171]在應(yīng)用階段中每次簽名前都需對(duì)用戶身份進(jìn)行驗(yàn)證,在步驟306之前還包括:執(zhí)行驗(yàn)PIN碼操作,執(zhí)行步驟306 ;
[0172]具體的,執(zhí)行驗(yàn)PIN碼操作為:判斷接收到的用戶輸入的PIN碼是否與內(nèi)部存儲(chǔ)的PIN碼一致,是則繼續(xù),否則給上位機(jī)返回錯(cuò)誤信息,結(jié)束。
[0173]在本實(shí)施例中,為防止上位機(jī)重復(fù)發(fā)送相同的數(shù)據(jù)包,則在步驟311和步驟312之間還包括:判斷簽名標(biāo)識(shí)的值是否為第一預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟302,否則執(zhí)行步驟312 ;所述步驟314和315之間還包括:判斷簽名標(biāo)識(shí)的值是否為第二預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟302,否則執(zhí)行步驟315。
[0174]在本發(fā)明的實(shí)施例中,是生產(chǎn)階段的簽名過(guò)程通過(guò)兩條指令實(shí)現(xiàn),即獲取外部摘要值和進(jìn)行簽名用兩條指令實(shí)現(xiàn)。設(shè)置的計(jì)數(shù)器在達(dá)到預(yù)設(shè)值則表示智能密鑰設(shè)備處于應(yīng)用階段,在內(nèi)部計(jì)算內(nèi)部摘要值并簽名,提高簽名的安全性;計(jì)數(shù)器的值未到達(dá)預(yù)設(shè)值時(shí)表示智能密鑰設(shè)備處于生產(chǎn)階段,只能在外部計(jì)算哈希值在內(nèi)部簽名,提高預(yù)植速度。且在應(yīng)用階段的每次外部簽名之前還可進(jìn)行驗(yàn)PIN碼操作,在生產(chǎn)階段的第一次簽名前進(jìn)行驗(yàn)PIN碼操作,以后不需在進(jìn)行驗(yàn)PIN碼操作,進(jìn)一步的提高了簽名的安全性。
[0175]實(shí)施例四
[0176]本發(fā)明實(shí)施例四提供一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法,在生產(chǎn)階段的接收到內(nèi)部哈希指令時(shí)先將提取的待簽名數(shù)據(jù)存儲(chǔ)到緩存區(qū)中,接收完所有的待簽名數(shù)據(jù)在對(duì)其進(jìn)行計(jì)算得到的內(nèi)部摘要值,且外部哈希是通過(guò)兩條指令來(lái)實(shí)現(xiàn)的,如圖5和圖6所示,包括:[0177]步驟401:智能設(shè)備上電,進(jìn)行初始化;
[0178]在本實(shí)施例中,進(jìn)行初始化包括設(shè)置計(jì)數(shù)器的初始值,復(fù)位驗(yàn)碼標(biāo)志,將簽名標(biāo)識(shí)的值設(shè)為O ;
[0179]步驟402:等待接收上位機(jī)下發(fā)的指令;
[0180]步驟403:當(dāng)接收到指令時(shí),判斷接收到的指令的類型,如為哈希指令則執(zhí)行步驟410,如為簽名指令則執(zhí)行步驟404,如為其他指令則根據(jù)接收到的指令進(jìn)行操作并將操作結(jié)果返回給上位機(jī),返回步驟402 ;
[0181]在本實(shí)施例中,判斷指令的類型具體為:通過(guò)接收到指令中的預(yù)設(shè)位置上的數(shù)據(jù)來(lái)判斷指令的類型,如為第一預(yù)設(shè)數(shù)據(jù)則為哈希指令,如為第二預(yù)設(shè)數(shù)據(jù)則為簽名指令;優(yōu)選的,預(yù)設(shè)位置為第三字節(jié);第一預(yù)設(shè)數(shù)據(jù)為0x90,第二預(yù)設(shè)數(shù)據(jù)為0x9e ;
[0182]例如,接收到的指令中前四個(gè)字節(jié)的數(shù)據(jù)為00/102a9080,則指令的類型為哈希指令;
[0183]步驟404:判斷簽名標(biāo)識(shí)的值,如為第一預(yù)設(shè)值則執(zhí)行步驟405 ;如為第二預(yù)設(shè)值則執(zhí)行步驟407,如為其他值則返回錯(cuò)誤信息,返回步驟402 ;
[0184]在本實(shí)施例中,判斷計(jì)算簽名方式具體為:通過(guò)接收到哈希指令中的預(yù)設(shè)位置上的數(shù)據(jù)來(lái)判斷計(jì)算簽名方式,如為第三數(shù)據(jù)則為內(nèi)部摘要值簽名,如為第四數(shù)據(jù)則為外部摘要值簽名;優(yōu)選的,預(yù)設(shè)位置為第四字節(jié);第三數(shù)據(jù)為0x00,第四數(shù)據(jù)為0x01 ;
[0185]步驟405:判斷簽名算法和用戶私鑰是否有效,是則執(zhí)行步驟406,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟402;
[0186]步驟406:根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),將簽名標(biāo)識(shí)的值清零,返回步驟402 ;
[0187]本實(shí)施例中,步驟406中在將簽名結(jié)果返回給上位機(jī)后還包括:給上位機(jī)返回簽名成功信息;
[0188]本實(shí)施例中,步驟405和步驟406中的判斷順序可調(diào)換,即可先判斷簽名算法和用戶私鑰有效后,在判斷簽名標(biāo)識(shí)是否置位,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī);
[0189]步驟407:判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,返回步驟402,否則執(zhí)行步驟408 ;
[0190]在本實(shí)施例中,如計(jì)數(shù)器的初始值為0,則步驟407為:判斷當(dāng)前計(jì)數(shù)器的值是否為N,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟402,否則執(zhí)行步驟408 ;如計(jì)數(shù)器的初始值為N,則步驟407為:判斷當(dāng)前計(jì)數(shù)器的值是否為0,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟402,否則執(zhí)行步驟408 ;其中N為預(yù)先設(shè)置好的正整數(shù);
[0191]步驟408:判斷簽名算法和用戶私鑰是否有效,是則執(zhí)行步驟409,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟402;
[0192]在本實(shí)施例中,步驟407和步驟408沒(méi)有先后順序,優(yōu)選的本實(shí)施例中先執(zhí)行步驟407再執(zhí)行步驟408 ;
[0193]步驟409:根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的外部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),更新計(jì)數(shù)器的值,將簽名標(biāo)識(shí)的值清零,返回步驟402 ;
[0194]本實(shí)施例中,步驟409中在將簽名結(jié)果返回給上位機(jī)后還包括:給上位機(jī)返回簽名成功信息;
[0195]具體的,在本實(shí)施例中,更新計(jì)數(shù)器的值的方法可以為遞增或遞減;如計(jì)數(shù)器的初始值為0,則采用遞增方式更新計(jì)數(shù)器的值;如計(jì)數(shù)器的初始值為N (N為非O正整數(shù)),則采用遞減方式更新計(jì)數(shù)器的值;
[0196]在本實(shí)施例中,計(jì)數(shù)器的初始值通過(guò)上位機(jī)下發(fā)的指令來(lái)設(shè)置,上位機(jī)在發(fā)送簽名指令之前先給智能密鑰設(shè)備發(fā)送設(shè)置計(jì)數(shù)器指令,智能密鑰設(shè)備接收到設(shè)置計(jì)數(shù)器指令時(shí)設(shè)置計(jì)數(shù)器的初始值(O或非O正整數(shù)N);
[0197]步驟410:根據(jù)接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則執(zhí)行步驟411,如為外部哈希指令則執(zhí)行步驟417 ;
[0198]在本實(shí)施例中,步驟410具體為:判斷接收到的指令中的預(yù)設(shè)位置上的數(shù)據(jù)來(lái)判斷哈希指令的類型,如為第五則為內(nèi)部哈希指令,如為第六數(shù)據(jù)則為外部哈希指令;具體的,預(yù)設(shè)位置為第四字節(jié),第五數(shù)據(jù)為0x80,第六數(shù)據(jù)為0x81 ;
[0199]步驟411:判斷簽名標(biāo)識(shí)的值是否為第二預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟402,否則執(zhí)行步驟412 ;
[0200]步驟412:判斷接收到的哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟415,否則執(zhí)行步驟413 ;
[0201]在本實(shí)施例中,步驟412具體為:判斷哈希指令中第一字節(jié)上的數(shù)據(jù)是否為第五預(yù)設(shè)數(shù)據(jù),是則為最后一包數(shù)據(jù),否則不是最后一包數(shù)據(jù),具體的,第五預(yù)設(shè)數(shù)據(jù)為0x00 ;
[0202]步驟413:判斷哈希算法是否有效,是則執(zhí)行步驟414,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟402 ;
[0203]步驟414:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,給上位機(jī)返回成功信息,返回步驟402 ;
[0204]步驟415:判斷哈希算法是否有效,是則執(zhí)行步驟416,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟402 ;
[0205]步驟416:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,根據(jù)有效哈希算法對(duì)所述緩存區(qū)中的待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,將簽名標(biāo)識(shí)的設(shè)為第一預(yù)設(shè)值,給上位機(jī)返回成功信息,返回步驟402 ;
[0206]步驟417:判斷簽名標(biāo)識(shí)的值是否為第一預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟402,否則執(zhí)行步驟418 ;
[0207]步驟418:從外部哈希指令中提取外部摘要值并保存,給上位機(jī)返回成功信息,將簽名標(biāo)識(shí)的值設(shè)為第二預(yù)設(shè)值,返回步驟402。
[0208]在本實(shí)施例中,如在步驟403中接收到指令為設(shè)置算法指令則進(jìn)行設(shè)置算法操作,實(shí)現(xiàn)過(guò)程可參照上述步驟Al-步驟A6,在此不再贅述。
[0209]本實(shí)施中,在智能密鑰設(shè)備的生產(chǎn)階段的預(yù)植過(guò)程中第一次執(zhí)行簽名之前還可對(duì)用戶輸入的PIN碼進(jìn)行驗(yàn)證,即在步驟418之前還包括:判斷是否驗(yàn)證過(guò)PIN碼,是則執(zhí)行步驟418,否則執(zhí)行驗(yàn)PIN碼操作,繼續(xù)執(zhí)行步驟418 ;
[0210]在智能密鑰設(shè)備的應(yīng)用階段中每次執(zhí)行簽名之前均可對(duì)用戶輸入的PIN碼進(jìn)行驗(yàn)證,即步驟406之前還包括:執(zhí)行驗(yàn)PIN碼操作,執(zhí)行步驟406 ;[0211]具體的,執(zhí)行驗(yàn)PIN碼操作為:判斷接收到的用戶輸入的PIN碼是否與內(nèi)部存儲(chǔ)的PIN碼一致,是則繼續(xù),否則給上位機(jī)返回錯(cuò)誤信息,結(jié)束。
[0212]本實(shí)施例四中的方法在COS層設(shè)計(jì)一個(gè)計(jì)數(shù)器,該計(jì)數(shù)器用以計(jì)數(shù)外部哈希的次數(shù)。當(dāng)計(jì)數(shù)器的值小于預(yù)設(shè)值時(shí),智能密鑰設(shè)備處于生產(chǎn)階段,當(dāng)計(jì)數(shù)器的值達(dá)到預(yù)設(shè)值時(shí),智能密鑰設(shè)備處于應(yīng)用階段,配合生產(chǎn)流程使用該計(jì)數(shù)器,以便切換智能密鑰設(shè)備的生命周期轉(zhuǎn)換。在生產(chǎn)階段支持在設(shè)備外進(jìn)行哈希計(jì)算在設(shè)備內(nèi)進(jìn)行簽名,提高了預(yù)植速度;在出廠之后的應(yīng)用階段,哈希計(jì)算和簽名計(jì)算均在設(shè)備內(nèi)執(zhí)行,提高了數(shù)據(jù)簽名的安全性;通過(guò)計(jì)數(shù)器即可以實(shí)現(xiàn)哈希計(jì)算在設(shè)備內(nèi)進(jìn)行又可以實(shí)現(xiàn)哈希計(jì)算在設(shè)備外進(jìn)行,保證了使用智能密鑰設(shè)備進(jìn)行簽名的安全性,并且能明確確定智能密鑰設(shè)備的生產(chǎn)階段。生產(chǎn)階段的提取外部哈希值和進(jìn)行簽名通過(guò)兩條指令來(lái)實(shí)現(xiàn),分工明確。
[0213]本實(shí)施例四中的方法在COS層設(shè)計(jì)一個(gè)計(jì)數(shù)器,該計(jì)數(shù)器用以計(jì)數(shù)外部哈希的次數(shù)。當(dāng)計(jì)數(shù)器的值小于預(yù)設(shè)值時(shí),智能密鑰設(shè)備處于生產(chǎn)階段,當(dāng)計(jì)數(shù)器的值達(dá)到預(yù)設(shè)值時(shí),智能密鑰設(shè)備處于應(yīng)用階段,配合生產(chǎn)流程使用該計(jì)數(shù)器,以便切換智能密鑰設(shè)備的生命周期轉(zhuǎn)換。在生產(chǎn)階段支持在設(shè)備外進(jìn)行哈希計(jì)算在設(shè)備內(nèi)進(jìn)行簽名,提高了預(yù)植速度;在出廠之后的應(yīng)用階段,哈希計(jì)算和簽名計(jì)算均在設(shè)備內(nèi)執(zhí)行,提高了數(shù)據(jù)簽名的安全性;通過(guò)計(jì)數(shù)器即可以實(shí)現(xiàn)哈希計(jì)算在設(shè)備內(nèi)進(jìn)行又可以實(shí)現(xiàn)哈希計(jì)算在設(shè)備外進(jìn)行,保證了使用智能密鑰設(shè)備進(jìn)行簽名的安全性,并且能明確確定智能密鑰設(shè)備的生產(chǎn)階段。且在生產(chǎn)階段只需第一次簽名時(shí)執(zhí)行驗(yàn)PIN碼操作,以后可直接進(jìn)行簽名,而在應(yīng)用階段,則需要每次簽名前都進(jìn)行執(zhí)行驗(yàn)PIN碼操作,進(jìn)一步的提高了簽名的安全性。
[0214]實(shí)施例五
[0215]本發(fā)明實(shí)施例五提供一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)裝置,如圖7所示,包括:
[0216]初始化模塊701,用于進(jìn)行初始化;
[0217]接收模塊702,用于接收上位機(jī)下發(fā)的指令;
[0218]第一判斷模塊703,用于判斷接收到的指令的類型,如為哈希指令則第二判斷模塊705工作,如為簽名指令則判斷簽名模塊704工作;
[0219]在本實(shí)施例中,第一判斷模塊703具體用于判斷指令中第三字節(jié)上的數(shù)據(jù),如為第一預(yù)設(shè)數(shù)據(jù)則為哈希指令,如為第二預(yù)設(shè)數(shù)據(jù)則為簽名指令;具體的,本實(shí)施例中的第一預(yù)設(shè)數(shù)據(jù)為0x90,第二預(yù)設(shè)數(shù)據(jù)為0x9e ;
[0220]判斷簽名模塊704,用于判斷簽名算法和用戶私鑰是否有效,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)所述保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果,否則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息;
[0221]本實(shí)施例中,判斷簽名模塊704判斷簽名算法和用戶私鑰是否有效具體為:
[0222]判斷簽名算法標(biāo)志是否置位,是則簽名算法有效,否則簽名算法無(wú)效;優(yōu)選的,簽名算法為SM2算法;
[0223]判斷是否定位了有效用戶私鑰,是則用戶私鑰有效,否則用戶私鑰無(wú)效;
[0224]第二判斷模塊705,用于根據(jù)所述接收模塊接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則第三判斷模塊706工作,如外部哈希指令則第四判斷模塊708工作;
[0225]具體的,本實(shí)施例中的第二判斷模塊705具體用于判斷哈希指令中的第四字節(jié)上的數(shù)據(jù),如為第三預(yù)設(shè)數(shù)據(jù)則為內(nèi)部哈希指令,如為第四預(yù)設(shè)數(shù)據(jù)則為外部哈希指令;具體的,第三預(yù)設(shè)數(shù)據(jù)為0x80,第四預(yù)設(shè)數(shù)據(jù)為0x81 ;
[0226]第三判斷模塊706,用于判斷哈希算法是否有效,是則計(jì)算存儲(chǔ)模塊707工作,否貝U,否則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息;
[0227]具體的,第三判斷模塊706,具體用于判斷哈希算法標(biāo)志是否置位,是則哈希算法有效,否則哈希算法無(wú)效;優(yōu)選的,哈希算法為SM3算法或SHA256算法;
[0228]計(jì)算存儲(chǔ)模塊707,用于從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),根據(jù)有效哈希算法對(duì)所述待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,通知發(fā)送模塊711給上位機(jī)返回成功信息;
[0229]本實(shí)施例中的計(jì)算存儲(chǔ)模塊707根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù);優(yōu)選的,預(yù)設(shè)字節(jié)為第五字節(jié);
[0230]第四判斷模塊708,用于判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值,是則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息,否則第五判斷模塊709工作;
[0231]第五判斷模塊709,用于判斷簽名算法和用戶私鑰是否有效,是則簽名更新模塊710工作,否則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息;
[0232]簽名更新模塊710,用于從外部哈希指令中提取外部摘要值,根據(jù)有效簽名算法使用有效用戶私鑰對(duì)外部摘要值進(jìn)行簽名得到簽名結(jié)果,更新計(jì)數(shù)器的值;
[0233]在本實(shí)施例中,簽名更新模塊710用于更新計(jì)數(shù)器的值的方法可以為遞增或遞減;如計(jì)數(shù)器的初始值為0,則采用遞增方式更新計(jì)數(shù)器的值;如計(jì)數(shù)器的初始值為N (N為非O正整數(shù)),則采用遞減方式更新計(jì)數(shù)器的值;
[0234]在本實(shí)施例中,計(jì)數(shù)器的初始值通過(guò)上位機(jī)下發(fā)的指令來(lái)設(shè)置,上位機(jī)在發(fā)送簽名指令之前先給智能密鑰設(shè)備發(fā)送設(shè)置計(jì)數(shù)器指令,智能密鑰設(shè)備接收到設(shè)置計(jì)數(shù)器指令時(shí)設(shè)置計(jì)數(shù)器的初始值(O或非O正整數(shù)N);
[0235]發(fā)送模塊711,用于將簽名結(jié)果、成功信息和錯(cuò)誤信息返回給上位機(jī)。
[0236]本實(shí)施例中的計(jì)算存儲(chǔ)模塊707的實(shí)現(xiàn)方案有兩種方式,第一種方式,計(jì)算存儲(chǔ)模塊707包括:
[0237]第一判斷單元,用于判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是第二判斷單元工作,否則第三判斷單元工作;
[0238]本實(shí)施例中的第一判斷單元具體用于判斷計(jì)算簽名指令中第一字節(jié)上的數(shù)據(jù)是否為第五預(yù)設(shè)數(shù)據(jù),是則為最后一包數(shù)據(jù),否則不是最后一包數(shù)據(jù),具體的,第五預(yù)設(shè)數(shù)據(jù)為 0x00 ;
[0239]第二判斷單元,用于判斷哈希算法是否有效,是則提取存儲(chǔ)單元工作,否則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息;
[0240]提取存儲(chǔ)單元:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,通知發(fā)送模塊711給上位機(jī)返回成功信息;
[0241]第三判斷單元,用于判斷哈希算法是否有效,是則提取計(jì)算單元工作,否則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息;
[0242]提取計(jì)算單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,根據(jù)有效哈希算法對(duì)所述緩存區(qū)中的待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,通知發(fā)送模塊711給上位機(jī)返回成功信息。
[0243]第二種方式,計(jì)算存儲(chǔ)模塊707包括:
[0244]第一判斷單元,用于判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則第四判斷單元工作,否則第二判斷單元工作;
[0245]第二判斷單元,用于判斷哈希算法是否有效,是則提取分包單元工作,否則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息;
[0246]提取分包單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,根據(jù)有效哈希算法對(duì)分包得到的第一個(gè)數(shù)據(jù)包進(jìn)行哈希得到中間摘要值,保存中間摘要值和分包得到的非完整的數(shù)據(jù)包;
[0247]如果此時(shí)接收到的內(nèi)部哈希指令中的數(shù)據(jù)為第一個(gè)待簽名數(shù)據(jù)包,則步驟提取分包單元直接對(duì)待簽名數(shù)據(jù)進(jìn)行分包;
[0248]第三判斷單元,用于判斷是否處理完所有的分包得到的完整的數(shù)據(jù)包,是則通知發(fā)送模塊711給上位機(jī)返回成功信息;否則第一計(jì)算更新單元工作;
[0249]第一計(jì)算更新單元,用于將分包得到的下一個(gè)完整的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值;
[0250]第四判斷單元,用于判斷哈希算法是否有效,是則提取分包更新單元工作,否則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息;
[0251]提取分包更新單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,對(duì)保存的中間摘要值和分包得到的第一包數(shù)據(jù)進(jìn)行并用計(jì)算結(jié)果更新中間摘要值;
[0252]第五判斷單元,用于判斷是否處理完所有的分包得到的數(shù)據(jù)包,是則將保存中的中間摘要值作為內(nèi)部摘要值,通知發(fā)送模塊711給上位機(jī)返回成功信息;否則第二計(jì)算更新單元工作;
[0253]第二計(jì)算更新單元,用于將分包得到的下一個(gè)數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值。
[0254]本實(shí)施例中如接收模塊701接收到設(shè)置算法指令,則該裝置還可包括:
[0255]獲取判斷模塊,用于從接收模塊701接收到的設(shè)置算法指令中獲取參數(shù),并判斷參數(shù)是否正確,是則第六判斷模塊工作,否則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息;
[0256]在本實(shí)施例中,獲取判斷模塊具體用于判斷設(shè)置算法指令中的第一預(yù)設(shè)位置上的數(shù)據(jù)是否為第一預(yù)設(shè)數(shù)據(jù)串,是則正確,否則不正確;具體的,第一預(yù)設(shè)位置為第三字節(jié)和第四字節(jié),第一預(yù)設(shè)數(shù)據(jù)串為0x410xb6 ;
[0257]第六判斷模塊,用于根據(jù)設(shè)置算法指令判斷是否支持哈希算法和簽名算法,是則設(shè)置模塊工作,否則通知發(fā)送模塊711給上位機(jī)返回錯(cuò)誤信息;
[0258]本實(shí)施例中的第六判斷模塊具體用于判斷接收到的設(shè)置算法指令的數(shù)據(jù)域中的第一預(yù)設(shè)位置上的數(shù)據(jù)是否為第一預(yù)設(shè)字符且第二預(yù)設(shè)位置上的數(shù)據(jù)為第二預(yù)設(shè)數(shù)據(jù)串,是則支持,否則不支持;具體的,設(shè)置算法指令的數(shù)據(jù)域中的第一預(yù)設(shè)位置為設(shè)置算法指令的數(shù)據(jù)域中的第三字節(jié),第一預(yù)設(shè)字符具體為0x52或0xf2,如為0x52時(shí)則表示支持SM3算法,如為0xf2則表示支持SHA256算法;第二預(yù)設(shè)位置為設(shè)置算法指令的數(shù)據(jù)域中的六字節(jié)和第七字節(jié),第二預(yù)設(shè)數(shù)據(jù)串為0X0d0X13,簽名算法為SM2算法;
[0259]設(shè)置模塊,用于設(shè)置有效哈希算法和有效簽名算法;
[0260]本實(shí)施例中的設(shè)置模塊具體用于將SM3算法標(biāo)志置位,將SM2算法標(biāo)志置位;
[0261]定位模塊,用于根據(jù)密鑰ID和用途信息定位對(duì)應(yīng)的密鑰文件中的有效用戶私鑰,通知發(fā)送模塊711給上位機(jī)返回成功信息;
[0262]本實(shí)施例中的密鑰ID和用途信息可以是預(yù)先通過(guò)一條指令來(lái)獲取得到或者從設(shè)置算法指令的數(shù)據(jù)域中獲取得到,優(yōu)選的,本實(shí)施例中是從設(shè)置算法指令的數(shù)據(jù)域中獲取得到的。
[0263]為提高本實(shí)施例裝置進(jìn)行簽名的安全性,該裝置還可包括:
[0264]驗(yàn)PIN碼模塊:用于執(zhí)行驗(yàn)PIN碼操作;
[0265]第七判斷模塊,用于判斷是否驗(yàn)證過(guò)PIN碼。
[0266]實(shí)施例六
[0267]本發(fā)明實(shí)施例六提供一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)裝置,如圖8所示,包括:
[0268]初始化模塊801,用于進(jìn)行初始化;
[0269]接收模塊802,用于接收上位機(jī)下發(fā)的指令;
[0270]第一判斷模塊803,用于判斷接收到的指令的類型;如為哈希指令則第三判斷模塊807工作,如為簽名指令則第二判斷模塊804工作;
[0271]本實(shí)施例中的第一判斷模塊具體用于判斷指令中第三字節(jié)上的數(shù)據(jù),如為第一預(yù)設(shè)數(shù)據(jù)則為哈希指令,如為第二預(yù)設(shè)數(shù)據(jù)則為簽名指令;具體的,本實(shí)施例中的第一預(yù)設(shè)數(shù)據(jù)為0x90,第二預(yù)設(shè)數(shù)據(jù)為0x9e ;
[0272]第二判斷模塊804,用于判斷簽名標(biāo)識(shí)的值,如為第一預(yù)設(shè)值則第一判斷簽名模塊805工作,如為第二預(yù)設(shè)值則第二判斷簽名模塊806工作;
[0273]第一判斷簽名模塊805,用于判斷簽名算法和用戶私鑰是否有效,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果,將簽名標(biāo)識(shí)的值清零,否則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息;
[0274]本實(shí)施例中的第一判斷簽名模塊805判斷簽名算法和用戶私鑰是否有效具體為:
[0275]判斷簽名算法標(biāo)志是否置位,是則簽名算法有效,否則簽名算法無(wú)效;優(yōu)選的,簽名算法為SM2算法;
[0276]判斷是否定位了有效用戶私鑰,是則用戶私鑰有效,否則用戶私鑰無(wú)效;
[0277]第二判斷簽名模塊806,用于判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值;還用于當(dāng)預(yù)設(shè)值未達(dá)到預(yù)設(shè)值時(shí)判斷判斷簽名算法和用戶私鑰是否有效,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的外部摘要值進(jìn)行簽名得到簽名結(jié)果,更新計(jì)數(shù)器的值,將簽名標(biāo)識(shí)的值清零,當(dāng)計(jì)數(shù)器的值達(dá)到預(yù)設(shè)值時(shí)或簽名算法和用戶私鑰無(wú)效時(shí)通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息;
[0278]第三判斷模塊807,用于根據(jù)接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則第四判斷模塊808工作,如為外部哈希指令則第五判斷模塊810工作;
[0279]本實(shí)施例中的第三判斷模塊807具體用于判斷哈希指令中的第四字節(jié)上的數(shù)據(jù),如為第三預(yù)設(shè)數(shù)據(jù)則為內(nèi)部哈希指令,如為第四預(yù)設(shè)數(shù)據(jù)則為外部哈希指令;具體的,第三預(yù)設(shè)數(shù)據(jù)為0x80,第四預(yù)設(shè)數(shù)據(jù)為0x81 ;
[0280]第四判斷模塊808,用于判斷簽名標(biāo)識(shí)的值是否為第二預(yù)設(shè)值,是則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息,否則判斷計(jì)算模塊809工作;
[0281]判斷計(jì)算模塊809,用于判斷哈希算法是否有效,是則從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),根據(jù)有效哈希算法對(duì)所述待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,通知發(fā)送模塊812給上位機(jī)返回成功信息,否則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息;
[0282]本實(shí)施例中的判斷計(jì)算模塊809判斷哈希算法是否有效,具體為:判斷哈希算法標(biāo)志是否置位,是則哈希算法有效,否則哈希算法無(wú)效;優(yōu)選的,哈希算法為SM3算法或SHA256 算法;
[0283]第五判斷模塊810,用于判斷簽名標(biāo)識(shí)的值是否為第一預(yù)設(shè)值,是則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息,否則提取保存模塊811工作;
[0284]提取保存模塊811,用于從外部哈希指令中提取外部摘要值并保存,通知發(fā)送模塊812給上位機(jī)返回成功信息,將簽名標(biāo)識(shí)的值設(shè)為第二預(yù)設(shè)值;
[0285]發(fā)送模塊812,用于將簽名結(jié)果、成功信息和錯(cuò)誤信息返回給上位機(jī)。
[0286]本實(shí)施例中的判斷計(jì)算模塊809有兩種實(shí)現(xiàn)方式:
[0287]第一種方式,判斷計(jì)算模塊809包括:
[0288]第一判斷單元,用于判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是第二判斷單元工作,否則第三判斷單元工作;
[0289]第二判斷單元,用于判斷哈希算法是否有效,是則提取存儲(chǔ)單元工作,否則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息;
[0290]提取存儲(chǔ)單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,通知發(fā)送模塊812給上位機(jī)返回成功
信息;
[0291]第三判斷單元,用于判斷哈希算法是否有效,是則提取計(jì)算單元工作,否則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息;
[0292]提取計(jì)算單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,根據(jù)有效哈希算法對(duì)所述緩存區(qū)中的待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存;
[0293]設(shè)置單元,用于將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,通知發(fā)送模塊812給上位機(jī)返回成功信息。
[0294]第二種方式,判斷計(jì)算模塊809包括:
[0295]第一判斷單元,判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則第四判斷單元工作,否則第二判斷單元工作;
[0296]第二判斷單元,用于判斷哈希算法是否有效,是則提取分包單元工作,否則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息;
[0297]提取分包單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,根據(jù)有效哈希算法對(duì)分包得到的第一個(gè)數(shù)據(jù)包進(jìn)行哈希得到中間摘要值,保存中間摘要值和分包得到的非完整的數(shù)據(jù)包;
[0298]第三判斷單元,判斷是否處理完所有的分包得到的完整的數(shù)據(jù)包,是則通知發(fā)送模塊812給上位機(jī)返回成功信息,否則第一計(jì)算更新單元工作;
[0299]第一計(jì)算更新單元,用于將分包得到的下一個(gè)完整的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值;
[0300]第四判斷單元,用于判斷哈希算法是否有效,是則提取分包更新單元工作,否則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息;
[0301]提取分包更新單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,對(duì)保存的中間摘要值和分包得到的第一包數(shù)據(jù)進(jìn)行并用計(jì)算結(jié)果更新中間摘要值;
[0302]第五判斷單元,用于判斷是否處理完所有的分包得到的數(shù)據(jù)包,是則將保存中的中間摘要值作為內(nèi)部摘要值,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,通知發(fā)送模塊812給上位機(jī)返回成功信息;否則第二計(jì)算更新單元工作;
[0303]第二計(jì)算更新單元,用于將分包得到的下一個(gè)數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值。
[0304]為防止本實(shí)施例中的裝置中的接收模塊801接收到相同的數(shù)據(jù)也進(jìn)行處理,則該裝置該可包括:第六判斷模塊,用于判斷簽名標(biāo)識(shí)的值是否為第一預(yù)設(shè)值,是則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息,否則判斷計(jì)算模塊809工作;
[0305]第七判斷模塊,用于判斷簽名標(biāo)識(shí)的值是否為第二預(yù)設(shè)值,是則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息,否則提取保存模塊811工作。
[0306]本實(shí)施例中如接收模塊801接收到設(shè)置算法指令,則該裝置還可包括:
[0307]獲取判斷模塊,用于從接收模塊801接收到的設(shè)置算法指令中獲取參數(shù),并判斷參數(shù)是否正確,是則第八判斷模塊工作,否則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息;
[0308]第八判斷模塊,用于根據(jù)設(shè)置算法指令判斷是否支持哈希算法和簽名算法,是則設(shè)置模塊工作,否則通知發(fā)送模塊812給上位機(jī)返回錯(cuò)誤信息;
[0309]設(shè)置模塊,用于設(shè)置有效哈希算法和有效簽名算法;
[0310]定位模塊,用于根據(jù)密鑰ID和用途信息定位對(duì)應(yīng)的密鑰文件中的有效用戶私鑰,通知發(fā)送模塊812給上位機(jī)返回成功信息;
[0311]本實(shí)施例中的獲取判斷模塊、第八判斷模塊、設(shè)置模塊、定位模塊的具體實(shí)現(xiàn)過(guò)程和參照實(shí)施例五,在此不再贅述。
[0312]為提高本實(shí)施例裝置進(jìn)行簽名的安全性,該裝置還可包括:
[0313]驗(yàn)PIN碼模塊:用于執(zhí)行驗(yàn)PIN碼操作;
[0314]第八判斷模塊,用于判斷是否驗(yàn)證過(guò)P IN碼。
[0315]以上所述,僅為本發(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)。
【權(quán)利要求】
1.一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法,其特征在于,包括: 步驟a:智能密鑰設(shè)備上電,進(jìn)行初始化; 步驟b:等待接收上位機(jī)下發(fā)的指令; 步驟c:當(dāng)接收到指令時(shí),判斷接收到的指令的類型,如為哈希指令則執(zhí)行步驟e,如為簽名指令則執(zhí)行步驟d,如為其他指令則根據(jù)接收到的指令進(jìn)行操作并將操作結(jié)果返回給上位機(jī),返回步驟b; 步驟d:判斷簽名算法和用戶私鑰是否有效,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),返回步驟b;否則給上位機(jī)返回錯(cuò)誤信息,返回步驟b ; 步驟e:根據(jù)接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則執(zhí)行步驟f,如為外部哈希指令則執(zhí)行步驟g ; 步驟f:判斷哈希算法是否有效,是則從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),根據(jù)有效哈希算法對(duì)所述待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,給上位機(jī)返回成功信息,返回步驟b,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟b ; 步驟g:判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,返回步驟b,否則執(zhí)行步驟h ; 步驟h:判斷簽名算法和用戶私鑰是否有效,是則從外部哈希指令中提取外部摘要值,根據(jù)有效簽名算法使用有效用戶私鑰對(duì)外部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),更新計(jì)數(shù)器的值,返回步驟b ;否則給上位機(jī)返回錯(cuò)誤信息,返回步驟b。
2.如權(quán)利要求1所述的方 法,所述步驟f包括: 步驟ell:判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟el4,否則執(zhí)行步驟e 12 ; 步驟el2:判斷哈希算法是否有效,是則執(zhí)行步驟el3,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟b ; 步驟el3:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,給上位機(jī)返回成功信息,返回步驟b ; 步驟el4:判斷哈希算法是否有效,是則執(zhí)行步驟el5,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟b ; 步驟el5:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,根據(jù)有效哈希算法對(duì)所述緩存區(qū)中的待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,給上位機(jī)返回成功信息,返回步驟b。
3.如權(quán)利要求1所述的方法,其特征在于,所述步驟f包括: 步驟e21:判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟e26,否則執(zhí)行步驟e22 ; 步驟e22:判斷哈希算法是否有效,是則執(zhí)行步驟e23,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟b ; 步驟e23:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,根據(jù)有效哈希算法對(duì)分包得到的第一個(gè)數(shù)據(jù)包進(jìn)行哈希得到中間摘要值,保存中間摘要值和分包得到的非完整的數(shù)據(jù)包; 步驟e24:判斷是否處理完所有的分包得到的完整的數(shù)據(jù)包,是則給上位機(jī)返回成功信息,返回步驟b,否則執(zhí)行步驟e25 ; 步驟e25:將分包得到的下一個(gè)完整的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值,返回步驟e24 ; 步驟e26:判斷哈希算法是否有效,是則執(zhí)行步驟e27,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟b ; 步驟e27:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,對(duì)保存的中間摘要值和分包得到的第一包數(shù)據(jù)進(jìn)行并用計(jì)算結(jié)果更新中間摘要值; 步驟e28:判斷是否處理完所有的分包得到的數(shù)據(jù)包,是則將保存中的中間摘要值作為內(nèi)部摘要值,給上位機(jī)返回成功信息,返回步驟b,否則執(zhí)行步驟e29 ; 步驟e29:將分包得到的下一個(gè)數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值,返回步驟e28。
4.如權(quán)利要求2或3所述的方法,其特征在于,判斷接收到的指令是否為最后一包數(shù)據(jù)具體為:判斷指令中第一字節(jié)上的數(shù)據(jù)是否為預(yù)設(shè)值,是則為最后一包數(shù)據(jù),否則不是最后一包數(shù)據(jù)。
5.如權(quán)利要求2或3所述的方法,其特征在于, 所述判斷哈希算法是否合`法,具體為:判斷哈希算法標(biāo)志是否置位,是則哈希算法有效,否則哈希算法無(wú)效; 所述判斷簽名算法是否合法,具體為:判斷簽名算法標(biāo)識(shí)是否置位,是則簽名算法有效,否則簽名算法無(wú)效; 所述判斷用戶私鑰是否有效具體為:判斷是否定位了有效用戶私鑰,是則用戶私鑰有效,否則用戶私鑰無(wú)效。
6.如權(quán)利要求1所述的方法,其特征在于,所述步驟c中根據(jù)接收到的指令進(jìn)行操作并將操作結(jié)果返回給上位機(jī),返回步驟b,包括:如接收到的指令為設(shè)置算法指令,則執(zhí)行步驟s1-步驟s6 ; 步驟S1:從所述設(shè)置算法指令中獲取參數(shù),并判斷參數(shù)是否正確,是則執(zhí)行步驟s2,否則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟b ; 步驟s2:根據(jù)設(shè)置算法指令判斷是否支持哈希算法和簽名算法,是則執(zhí)行步驟s3,否則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟b ; 步驟s3:設(shè)置有效哈希算法和有效簽名算法; 步驟s4:根據(jù)密鑰ID和用途信息定位對(duì)應(yīng)的密鑰文件中的有效用戶私鑰,給上位機(jī)返回成功響應(yīng),返回步驟b。
7.如權(quán)利要求6所述的方法,其特征在于,所述判斷參數(shù)是否正確具體為:判斷所述設(shè)置算法指令中的第一預(yù)設(shè)位置上的數(shù)據(jù)是否為第一預(yù)設(shè)數(shù)據(jù)串,是則參數(shù)正確,否則參數(shù)不正確。
8.如權(quán)利要求6所述的方法,其特征在于,所述步驟s2具體為:判斷接收到的設(shè)置算法指令的數(shù)據(jù)域中的第一預(yù)設(shè)位置上的數(shù)據(jù)和第二預(yù)設(shè)位置上的數(shù)據(jù)是否分別為第一預(yù)設(shè)字符和第二預(yù)設(shè)數(shù)據(jù)串,是則支持,否則不支持; 所述步驟s3具體為:將哈希算法標(biāo)志和簽名算法標(biāo)志置位。
9.如權(quán)利要求6所述的方法,其特征在于,所述密鑰ID和用途信息為預(yù)先通過(guò)一條指令來(lái)獲取得到或從設(shè)置算法指令的數(shù)據(jù)域中獲取得到。
10.如權(quán)利要求1所述的方法,其特征在于,所述步驟d中在進(jìn)行簽名之前還包括:執(zhí)行驗(yàn)PIN碼操作; 所述步驟h中在進(jìn)行簽名之前還包括:判斷是否驗(yàn)證過(guò)PIN碼,是則繼續(xù),否則執(zhí)行驗(yàn)PIN碼操作,繼續(xù)。
11.如權(quán)利要求10所述的方法,其特征在于,所述執(zhí)行驗(yàn)PIN碼操作,具體包括:判斷接收到的用戶輸入的PIN碼是否與內(nèi)部存儲(chǔ)的PIN碼一致,是則繼續(xù),否則給上位機(jī)返回錯(cuò)誤信息,結(jié)束。
12.一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)方法,其特征在于,包括: 步驟Pl:智能密鑰設(shè)備上電,進(jìn)行初始化; 步驟P2:等待接收上位機(jī)下發(fā)的指令; 步驟P3:當(dāng)接收到指令時(shí),判斷接收到的指令的類型,如為哈希指令則執(zhí)行步驟P7,如為簽名指令則執(zhí)行步驟P4,如為其他指令則根據(jù)接收到的指令進(jìn)行操作并將操作結(jié)果返回給上位機(jī),返回步驟P2;` 步驟P4:判斷簽名標(biāo)識(shí)的值,如為第一預(yù)設(shè)值則執(zhí)行步驟P5 ;如為第二預(yù)設(shè)值則執(zhí)行步驟P6,如為其他值則返回錯(cuò)誤信息,返回步驟P2 ; 步驟P5:判斷簽名算法和用戶私鑰是否有效,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),將簽名標(biāo)識(shí)的值清零,返回步驟P2 ;否則給上位機(jī)返回錯(cuò)誤信息,返回步驟P2 ; 步驟P6:判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,返回步驟P2,否則判斷簽名算法和用戶私鑰是否有效,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的外部摘要值進(jìn)行簽名得到簽名結(jié)果并將其返回給上位機(jī),更新計(jì)數(shù)器的值,將簽名標(biāo)識(shí)的值清零,返回步驟P2 ;否則給上位機(jī)返回錯(cuò)誤信息,返回步驟P2 ; 步驟P7:根據(jù)接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則執(zhí)行步驟P8,如為外部哈希指令則執(zhí)行步驟PlO ; 步驟P8:判斷簽名標(biāo)識(shí)的值是否為第二預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟P2,否則執(zhí)行步驟P9 ; 步驟P9:判斷哈希算法是否有效,是則從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),根據(jù)有效哈希算法對(duì)所述待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,給上位機(jī)返回成功信息,返回步驟P2,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟P2 ;步驟P10:判斷簽名標(biāo)識(shí)的值是否為第一預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟P2,否則執(zhí)行步驟Pll ; 步驟Pll:從外部哈希指令中提取外部摘要值并保存,給上位機(jī)返回成功信息,將簽名標(biāo)識(shí)的值設(shè)為第二預(yù)設(shè)值,返回步驟P2。
13.如權(quán)利要求12所述的方法,所述步驟P9包括: 步驟ell:判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟el4,否則執(zhí)行步驟e 12 ; 步驟el2:判斷哈希算法是否有效,是則執(zhí)行步驟el3,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟P2 ; 步驟el3:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,給上位機(jī)返回成功信息,返回步驟P2 ; 步驟el4:判斷哈希算法是否有效,是則執(zhí)行步驟el5,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟P2 ; 步驟el5:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,根據(jù)有效哈希算法對(duì)所述緩存區(qū)中的待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,給上位機(jī)返回成功信息,返回步驟P2。
14.如權(quán)利要求12所述的方法,其特征在于,所述步驟P9包括: 步驟e21:判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則執(zhí)行步驟e26,否則執(zhí)行步驟e22 ; 步驟e22:判斷哈希算法是否有效,是則執(zhí)行步驟e23,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟P2 ; 步驟e23:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,根據(jù)有效哈希算法對(duì)分包得到的第一個(gè)數(shù)據(jù)包進(jìn)行哈希得到中間摘要值,保存中間摘要值和分包得到的非完整的數(shù)據(jù)包; 步驟e24:判斷是否處理完所 有的分包得到的完整的數(shù)據(jù)包,是則給上位機(jī)返回成功信息,返回步驟P2,否則執(zhí)行步驟e25 ; 步驟e25:將分包得到的下一個(gè)完整的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值,返回步驟e24 ; 步驟e26:判斷哈希算法是否有效,是則執(zhí)行步驟e27,否則給上位機(jī)返回錯(cuò)誤信息,返回步驟P2 ; 步驟e27:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,對(duì)保存的中間摘要值和分包得到的第一包數(shù)據(jù)進(jìn)行并用計(jì)算結(jié)果更新中間摘要值; 步驟e28:判斷是否處理完所有的分包得到的數(shù)據(jù)包,是則將保存中的中間摘要值作為內(nèi)部摘要值,給上位機(jī)返回成功信息,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,返回步驟P2,否則執(zhí)行步驟e29 ; 步驟e29:將分包得到的下一個(gè)數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值,返回步驟e28。
15.如權(quán)利要求13或14所述的方法,其特征在于,判斷接收到的指令是否為最后一包數(shù)據(jù)具體為:判斷指令中第一字節(jié)上的數(shù)據(jù)是否為預(yù)設(shè)值,是則為最后一包數(shù)據(jù),否則不是最后一包數(shù)據(jù)。
16.如權(quán)利要求13或14所述的方法,其特征在于, 所述判斷哈希算法是否合法,具體為:判斷哈希算法標(biāo)志是否置位,是則哈希算法有效,否則哈希算法無(wú)效; 所述判斷簽名算法是否合法,具體為:判斷簽名算法標(biāo)識(shí)是否置位,是則簽名算法有效,否則簽名算法無(wú)效; 所述判斷用戶私鑰是否有效具體為:判斷是否定位了有效用戶私鑰,是則用戶私鑰有效,否則用戶私鑰無(wú)效。
17.如權(quán)利要求12所述的方法,其特征在于, 所述步驟P8和P9之間還包括:判斷簽名標(biāo)識(shí)的值是否為第一預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟P2,否則執(zhí)行步驟P9 ; 所述步驟PlO和Pll之間還包括:判斷簽名標(biāo)識(shí)的值是否為第二預(yù)設(shè)值,是則給上位機(jī)返回錯(cuò)誤信息,執(zhí)行步驟P2,否則 執(zhí)行步驟Pll。
18.如權(quán)利要求12所述的方法,其特征在于,所述步驟P3中根據(jù)接收到的指令進(jìn)行操作并將操作結(jié)果返回給上位機(jī),返回步驟P2,包括:如接收到的指令為設(shè)置算法指令,則執(zhí)行步驟S1-步驟s6 ; 步驟S1:從所述設(shè)置算法指令中獲取參數(shù),并判斷參數(shù)是否正確,是則執(zhí)行步驟s2,否則給上位機(jī)返回錯(cuò)誤信息,將簽名標(biāo)識(shí)的值清零,執(zhí)行步驟P2 ; 步驟s2:根據(jù)設(shè)置算法指令判斷是否支持哈希算法和簽名算法,是則執(zhí)行步驟s3,否則給上位機(jī)返回錯(cuò)誤信息,將簽名標(biāo)識(shí)的值清零,執(zhí)行步驟P2 ; 步驟s3:設(shè)置有效哈希算法和有效簽名算法; 步驟s4:根據(jù)密鑰ID和用途信息定位對(duì)應(yīng)的密鑰文件中的有效用戶私鑰,給上位機(jī)返回成功響應(yīng),將簽名標(biāo)識(shí)的值清零,返回步驟P2。
19.如權(quán)利要求18所述的方法,其特征在于,所述判斷參數(shù)是否正確具體為:判斷所述設(shè)置算法指令中的第一預(yù)設(shè)位置上的數(shù)據(jù)是否為第一預(yù)設(shè)數(shù)據(jù)串,是則參數(shù)正確,否則參數(shù)不正確。
20.如權(quán)利要求18所述的方法,其特征在于,所述步驟s2具體為:判斷接收到的設(shè)置算法指令的數(shù)據(jù)域中的第一預(yù)設(shè)位置上的數(shù)據(jù)和第二預(yù)設(shè)位置上的數(shù)據(jù)是否分別為第一預(yù)設(shè)字符和第二預(yù)設(shè)數(shù)據(jù)串,是則支持,否則不支持; 所述步驟s3具體為:將哈希算法標(biāo)志和簽名算法標(biāo)志置位。
21.如權(quán)利要求18所述的方法,其特征在于,所述密鑰ID和用途信息為預(yù)先通過(guò)一條指令來(lái)獲取得到或從設(shè)置算法指令的數(shù)據(jù)域中獲取得到。
22.如權(quán)利要求12所述的方法,其特征在于, 所述步驟P5中在進(jìn)行簽名之前還包括:執(zhí)行驗(yàn)PIN碼操作; 所述步驟P6中在進(jìn)行簽名之前還包括:判斷是否驗(yàn)證過(guò)PIN碼,是則繼續(xù),否則執(zhí)行驗(yàn)PIN碼操作,繼續(xù)。
23.如權(quán)利要求22所述的方法,其特征在于,所述執(zhí)行驗(yàn)PIN碼操作,具體包括:判斷接收到的用戶輸入的PIN碼是否與內(nèi)部存儲(chǔ)的PIN碼一致,是則繼續(xù),否則給上位機(jī)返回錯(cuò)誤信息,結(jié)束。
24.一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)裝置,其特征在于,包括: 初始化模塊:用于進(jìn)行初始化; 接收模塊:用于接收上位機(jī)下發(fā)的指令;第一判斷模塊,用于判斷接收到的指令的類型,如為哈希指令則第二判斷模塊工作,如為簽名指令則判斷簽名模塊工作; 判斷簽名模塊,用于判斷簽名算法和用戶私鑰是否有效,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)所述保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 第二判斷模塊,用于根據(jù)所述接收模塊接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則第三判斷模塊工作,如外部哈希指令則第四判斷模塊工作; 第三判斷模塊,用于判斷哈希算法是否有效,是則計(jì)算存儲(chǔ)模塊工作,否則,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 計(jì)算存儲(chǔ)模塊,用于從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),根據(jù)有效哈希算法對(duì)所述待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,通知發(fā)送模塊給上位機(jī)返回成功信息; 第四判斷模塊,用于判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值,是則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息,否則第五判斷模塊工作; 第五判斷模塊,用于判斷簽名算法和用戶私鑰是否有效,是則簽名更新模塊工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 簽名更新模塊,用于從外部哈希指令中提取外部摘要值,根據(jù)有效簽名算法使用有效用戶私鑰對(duì)外部摘要值進(jìn)行簽名得到簽名結(jié)果,更新計(jì)數(shù)器的值; 發(fā)送模塊,用于將簽名結(jié)果、成功信息和錯(cuò)誤信息返回給上位機(jī)。
25.如權(quán)利要求24所述的裝置,所述計(jì)算存儲(chǔ)模塊包括: 第一判斷單元,用于判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是第二判斷單元工作,否則第三判斷單元`工作; 第二判斷單元,用于判斷哈希算法是否有效,是則提取存儲(chǔ)單元工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 提取存儲(chǔ)單元:根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,通知發(fā)送模塊給上位機(jī)返回成功信息; 第三判斷單元,用于判斷哈希算法是否有效,是則提取計(jì)算單元工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 提取計(jì)算單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,根據(jù)有效哈希算法對(duì)所述緩存區(qū)中的待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,通知發(fā)送模塊給上位機(jī)返回成功信息。
26.如權(quán)利要求24所述的裝置,其特征在于,所述計(jì)算存儲(chǔ)模塊包括: 第一判斷單元,用于判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則第四判斷單元工作,否則第二判斷單元工作; 第二判斷單元,用于判斷哈希算法是否有效,是則提取分包單元工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 提取分包單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,根據(jù)有效哈希算法對(duì)分包得到的第一個(gè)數(shù)據(jù)包進(jìn)行哈希得到中間摘要值,保存中間摘要值和分包得到的非完整的數(shù)據(jù)包;第三判斷單元,用于判斷是否處理完所有的分包得到的完整的數(shù)據(jù)包,是則通知發(fā)送模塊給上位機(jī)返回成功信息;否則第一計(jì)算更新單元工作; 第一計(jì)算更新單元,用于將分包得到的下一個(gè)完整的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值; 第四判斷單元,用于判斷哈希算法是否有效,是則提取分包更新單元工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 提取分包更新單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,對(duì)保存的中間摘要值和分包得到的第一包數(shù)據(jù)進(jìn)行并用計(jì)算結(jié)果更新中間摘要值; 第五判斷單元,用于判斷是否處理完所有的分包得到的數(shù)據(jù)包,是則將保存中的中間摘要值作為內(nèi)部摘要值,通知發(fā)送模塊給上位機(jī)返回成功信息;否則第二計(jì)算更新單元工作; 第二計(jì)算更新單元,用于將分包得到的下一個(gè)數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值。
27.如權(quán)利要求24所述的裝置,其特征在于,還包括: 獲取判斷模塊,用于從所述接收模塊接收到的設(shè)置算法指令中獲取參數(shù),并判斷參數(shù)是否正確,是則第六判斷模塊工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 第六判斷模塊,用于根據(jù)設(shè)置算法指令判斷是否支持哈希算法和簽名算法,是則設(shè)置模塊工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 設(shè)置模塊,用于設(shè)置有效哈希算法和有效簽名算法;` 定位模塊,用于根據(jù)密鑰ID和用途信息定位對(duì)應(yīng)的密鑰文件中的有效用戶私鑰,通知發(fā)送模塊給上位機(jī)返回成功信息。
28.如權(quán)利要求24所述的裝置,其特征在于,還包括: 驗(yàn)PIN碼模塊:用于執(zhí)行驗(yàn)PIN碼操作; 第七判斷模塊,用于判斷是否驗(yàn)證過(guò)PIN碼。
29.一種確定智能密鑰設(shè)備生命周期的實(shí)現(xiàn)裝置,其特征在于,包括: 初始化模塊,用于進(jìn)行初始化; 接收模塊,用于接收上位機(jī)下發(fā)的指令; 第一判判斷模塊,用于判斷接收到的指令的類型;如為哈希指令則第三判斷模塊工作,如為簽名指令則第二判斷模塊工作; 第二判斷模塊,用于判斷簽名標(biāo)識(shí)的值,如為第一預(yù)設(shè)值則第一判斷簽名模塊工作,如為第二預(yù)設(shè)值則第二判斷簽名模塊工作; 第一判斷簽名模塊,用于判斷簽名算法和用戶私鑰是否有效,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的內(nèi)部摘要值進(jìn)行簽名得到簽名結(jié)果,將簽名標(biāo)識(shí)的值清零,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 第二判斷簽名模塊,用于判斷計(jì)數(shù)器的值是否達(dá)到預(yù)設(shè)值;還用于當(dāng)預(yù)設(shè)值未達(dá)到預(yù)設(shè)值時(shí)判斷判斷簽名算法和用戶私鑰是否有效,是則根據(jù)有效簽名算法使用有效用戶私鑰對(duì)保存的外部摘要值進(jìn)行簽名得到簽名結(jié)果,更新計(jì)數(shù)器的值,將簽名標(biāo)識(shí)的值清零,當(dāng)計(jì)數(shù)器的值達(dá)到預(yù)設(shè)值時(shí)或簽名算法和用戶私鑰無(wú)效時(shí)通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 第三判斷模塊,用于根據(jù)接收到的指令判斷哈希指令的類型,如為內(nèi)部哈希指令則第四判斷模塊工作,如為外部哈希指令則第五判斷模塊工作; 第四判斷模塊,用于判斷簽名標(biāo)識(shí)的值是否為第二預(yù)設(shè)值,是則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息,否則判斷計(jì)算模塊工作; 判斷計(jì)算模塊,用于判斷哈希算法是否有效,是則從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),根據(jù)有效哈希算法對(duì)所述待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,通知發(fā)送模塊給上位機(jī)返回成功信息,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 第五判斷模塊,用于判斷簽名標(biāo)識(shí)的值是否為第一預(yù)設(shè)值,是則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息,否則提取保存模塊工作; 提取保存模塊,用于從外部哈希指令中提取外部摘要值并保存,通知發(fā)送模塊給上位機(jī)返回成功信息,將簽名標(biāo)識(shí)的值設(shè)為第二預(yù)設(shè)值; 發(fā)送模塊,用于將簽名結(jié)果、成功信息和錯(cuò)誤信息返回給上位機(jī)。
30.如權(quán)利要求29所述的裝置,所述判斷計(jì)算模塊包括: 第一判斷單元,用于判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是第二判斷單元工作,否則第三判斷單元工作; 第二判斷單元,用于判斷哈希算法是否有效,是則提取存儲(chǔ)單元工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 提取存儲(chǔ)單元,用于根據(jù)內(nèi)部 哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,通知發(fā)送模塊給上位機(jī)返回成功信息;第三判斷單元,用于判斷哈希算法是否有效,是則提取計(jì)算單元工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 提取計(jì)算單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù)并順序存儲(chǔ)到緩存區(qū)中,根據(jù)有效哈希算法對(duì)所述緩存區(qū)中的待簽名數(shù)據(jù)進(jìn)行計(jì)算得到內(nèi)部摘要值并保存; 設(shè)置單元,用于將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,通知發(fā)送模塊給上位機(jī)返回成功信肩、O
31.如權(quán)利要求29所述的裝置,其特征在于,所述判斷計(jì)算模塊包括: 第一判斷單元,判斷接收到的內(nèi)部哈希指令是否為最后一包數(shù)據(jù),是則第四判斷單元工作,否則第二判斷單元工作; 第二判斷單元,用于判斷哈希算法是否有效,是則提取分包單元工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 提取分包單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,根據(jù)有效哈希算法對(duì)分包得到的第一個(gè)數(shù)據(jù)包進(jìn)行哈希得到中間摘要值,保存中間摘要值和分包得到的非完整的數(shù)據(jù)包; 第三判斷單元,判斷是否處理完所有的分包得到的完整的數(shù)據(jù)包,是則通知發(fā)送模塊給上位機(jī)返回成功信息,否則第一計(jì)算更新單元工作;第一計(jì)算更新單元,用于將分包得到的下一個(gè)完整的數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值; 第四判斷單元,用于判斷哈希算法是否有效,是則提取分包更新單元工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 提取分包更新單元,用于根據(jù)內(nèi)部哈希指令中的預(yù)設(shè)字節(jié)上的待簽名數(shù)據(jù)長(zhǎng)度從內(nèi)部哈希指令中提取待簽名數(shù)據(jù),對(duì)保存的非完整的數(shù)據(jù)包和待簽名數(shù)據(jù)進(jìn)行分包,對(duì)保存的中間摘要值和分包得到的第一包數(shù)據(jù)進(jìn)行并用計(jì)算結(jié)果更新中間摘要值; 第五判斷單元,用于判斷是否處理完所有的分包得到的數(shù)據(jù)包,是則將保存中的中間摘要值作為內(nèi)部摘要值,將簽名標(biāo)識(shí)的值設(shè)為第一預(yù)設(shè)值,通知發(fā)送模塊給上位機(jī)返回成功信息;否則第二計(jì)算更新單元工作; 第二計(jì)算更新單元,用于將分包得到的下一個(gè)數(shù)據(jù)包作為當(dāng)前數(shù)據(jù)包,根據(jù)有效哈希算法對(duì)中間摘要值和當(dāng)前數(shù)據(jù)包進(jìn)行計(jì)算并用計(jì)算結(jié)果更新中間摘要值。
32.如權(quán)利要求29所述的裝置,其特征在于,還包括: 第六判斷模塊,用于判斷簽名標(biāo)識(shí)的值是否為第一預(yù)設(shè)值,是則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息,否則判斷計(jì)算模塊工作; 第七判斷模塊,用于判斷簽名標(biāo)識(shí)的值是否為第二預(yù)設(shè)值,是則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息,否則提取保存模塊工作。
33.如權(quán)利要求29所述的裝置,其特征在于,還包括: 獲取判斷模塊,用于從所述接收模塊接收到的設(shè)置算法指令中獲取參數(shù),并判斷參數(shù)是否正確,是則第八判斷模塊工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息;` 第八判斷模塊,用于根據(jù)設(shè)置算法指令判斷是否支持哈希算法和簽名算法,是則設(shè)置模塊工作,否則通知發(fā)送模塊給上位機(jī)返回錯(cuò)誤信息; 設(shè)置模塊,用于設(shè)置有效哈希算法和有效簽名算法; 定位模塊,用于根據(jù)密鑰ID和用途信息定位對(duì)應(yīng)的密鑰文件中的有效用戶私鑰,通知發(fā)送模塊給上位機(jī)返回成功信息。
34.如權(quán)利要求29所述的方法,其特征在于,還包括: 驗(yàn)PIN碼模塊:用于執(zhí)行驗(yàn)PIN碼操作; 第八判斷模塊,用于判斷是否驗(yàn)證過(guò)PIN碼。
【文檔編號(hào)】H04L29/06GK103490894SQ201310405532
【公開(kāi)日】2014年1月1日 申請(qǐng)日期:2013年9月9日 優(yōu)先權(quán)日:2013年9月9日
【發(fā)明者】陸舟, 于華章 申請(qǐng)人:飛天誠(chéng)信科技股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1