CN103490894B - 一种确定智能密钥设备生命周期的实现方法及装置 - Google Patents
一种确定智能密钥设备生命周期的实现方法及装置 Download PDFInfo
- Publication number
- CN103490894B CN103490894B CN201310405532.9A CN201310405532A CN103490894B CN 103490894 B CN103490894 B CN 103490894B CN 201310405532 A CN201310405532 A CN 201310405532A CN 103490894 B CN103490894 B CN 103490894B
- Authority
- CN
- China
- Prior art keywords
- instruction
- hash
- host computer
- data
- signature
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开一种确定智能密钥设备生命周期的实现方法及装置,该方法包括:当智能密钥设备接收到指令时,判断指令的类型,如为哈希指令则判断哈希指令的类型,如为内部哈希指令则从内部哈希指令中提取待签名数据,对所述待签名数据进行计算得到内部摘要值并保存,给上位机返回成功信息,等待接收指令;如为外部哈希指令则当计数器的值未达到预设值时,从外部哈希指令中提取外部摘要值,对外部摘要值进行签名并将签名结果返回给上位机,更新计数器的值,等待接收指令;如为签名指令则对保存的内部摘要值进行签名并将签名结果返回给上位机。本发明的计数器确定智能密钥设备的生命周期,既保证了生产阶段的预植速度,又提高了应用阶段签名的安全性。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种确定智能密钥设备生命周期的实现方法及装置。
背景技术
智能密钥设备的生命周期包括生产阶段和使用阶段;在生产阶段中需要在生产环境下将数字证书下载到智能密钥设备中(即预植过程),包括:生成密钥对、生成下载证书请求、对下载证书请求进行签名、写入证书;如果是双证书预植,则还有加解密过程,其中对密钥对进行加密的密钥是由CA生成的,"不落地"写到智能密钥设备中。在使用阶段中,当智能密钥设备接收到签名指令时,使用内部存储的私钥进行签名,为了保证签名的安全性,计算摘要值一般都是在设备内进行。且现有技术中,智能密钥设备的生命周期的不同阶段通过设置不同的标记来实现,需占用一定的存储空间;而且不能很好的控制生产阶段中的预植操作。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种确定智能密钥设备生命周期的实现方法及装置。
本发明提供了一种确定智能密钥设备生命周期的实现方法,包括:
步骤a:智能密钥设备上电,进行初始化;
步骤b:等待接收上位机下发的指令;
步骤c:当接收到指令时,判断接收到的指令的类型,如为哈希指令则执行步骤e,如为签名指令则执行步骤d,如为其他指令则根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤b;
步骤d:判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果并将其返回给上位机,返回步骤b;否则给上位机返回错误信息,返回步骤b;
步骤e:根据接收到的指令判断哈希指令的类型,如为内部哈希指令则执行步骤f,如为外部哈希指令则执行步骤g;
步骤f:判断哈希算法是否有效,是则从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,给上位机返回成功信息,返回步骤b,否则给上位机返回错误信息,返回步骤b;
步骤g:判断计数器的值是否达到预设值,是则给上位机返回错误信息,返回步骤b,否则执行步骤h;
步骤h:判断签名算法和用户私钥是否有效,是则从外部哈希指令中提取外部摘要值,根据有效签名算法使用有效用户私钥对外部摘要值进行签名得到签名结果并将其返回给上位机,更新计数器的值,返回步骤b;否则给上位机返回错误信息,返回步骤b。
其中,所述步骤f包括:
步骤e11:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e14,否则执行步骤e12;
步骤e12:判断哈希算法是否有效,是则执行步骤e13,否则给上位机返回错误信息,返回步骤b;
步骤e13:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,给上位机返回成功信息,返回步骤b;
步骤e14:判断哈希算法是否有效,是则执行步骤e15,否则给上位机返回错误信息,返回步骤b;
步骤e15:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,给上位机返回成功信息,返回步骤b。
其中,所述步骤f包括:
步骤e21:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e26,否则执行步骤e22;
步骤e22:判断哈希算法是否有效,是则执行步骤e23,否则给上位机返回错误信息,返回步骤b;
步骤e23:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
步骤e24:判断是否处理完所有的分包得到的完整的数据包,是则给上位机返回成功信息,返回步骤b,否则执行步骤e25;
步骤e25:将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e24;
步骤e26:判断哈希算法是否有效,是则执行步骤e27,否则给上位机返回错误信息,返回步骤b;
步骤e27:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
步骤e28:判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,给上位机返回成功信息,返回步骤b,否则执行步骤e29;
步骤e29:将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e28。
其中,所述判断接收到的指令是否为最后一包数据具体为:判断指令中第一字节上的数据是否为预设值,是则为最后一包数据,否则不是最后一包数据。
其中,所述判断哈希算法是否合法,具体为:判断哈希算法标志是否置位,是则哈希算法有效,否则哈希算法无效;
所述判断签名算法是否合法,具体为:判断签名算法标识是否置位,是则签名算法有效,否则签名算法无效;
所述判断用户私钥是否有效具体为:判断是否定位了有效用户私钥,是则用户私钥有效,否则用户私钥无效。
其中,所述步骤c中根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤b,包括:如接收到的指令为设置算法指令,则执行步骤s1-步骤s6;
步骤s1:从所述设置算法指令中获取参数,并判断参数是否正确,是则执行步骤s2,否则给上位机返回错误信息,执行步骤b;
步骤s2:根据设置算法指令判断是否支持哈希算法和签名算法,是则执行步骤s3,否则给上位机返回错误信息,执行步骤b;
步骤s3:设置有效哈希算法和有效签名算法;
步骤s4:根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,给上位机返回成功响应,返回步骤b。
其中,所述判断参数是否正确具体为:判断所述设置算法指令中的第一预设位置上的数据是否为第一预设数据串,是则参数正确,否则参数不正确。
其中,所述步骤s2具体为:判断接收到的设置算法指令的数据域中的第一预设位置上的数据和第二预设位置上的数据是否分别为第一预设字符和第二预设数据串,是则支持,否则不支持;
所述步骤s3具体为:将哈希算法标志和签名算法标志置位。
其中,所述密钥ID和用途信息为预先通过一条指令来获取得到或从设置算法指令的数据域中获取得到。
其中,所述步骤d中在进行签名之前还包括:执行验PIN码操作;
所述步骤h中在进行签名之前还包括:判断是否验证过PIN码,是则继续,否则执行验PIN码操作,继续。
其中,所述执行验PIN码操作,具体包括:判断接收到的用户输入的PIN码是否与内部存储的PIN码一致,是则继续,否则给上位机返回错误信息,结束。
本发明又提供了一种确定智能密钥设备生命周期的实现方法,包括:
步骤P1:智能密钥设备上电,进行初始化;
步骤P2:等待接收上位机下发的指令;
步骤P3:当接收到指令时,判断接收到的指令的类型,如为哈希指令则执行步骤P7,如为签名指令则执行步骤P4,如为其他指令则根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤P2;
步骤P4:判断签名标识的值,如为第一预设值则执行步骤P5;如为第二预设值则执行步骤P6,如为其他值则返回错误信息,返回步骤P2;
步骤P5:判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果并将其返回给上位机,将签名标识的值清零,返回步骤P2;否则给上位机返回错误信息,返回步骤P2;
步骤P6:判断计数器的值是否达到预设值,是则给上位机返回错误信息,返回步骤P2,否则判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的外部摘要值进行签名得到签名结果并将其返回给上位机,更新计数器的值,将签名标识的值清零,返回步骤P2;否则给上位机返回错误信息,返回步骤P2;
步骤P7:根据接收到的指令判断哈希指令的类型,如为内部哈希指令则执行步骤P8,如为外部哈希指令则执行步骤P10;
步骤P8:判断签名标识的值是否为第二预设值,是则给上位机返回错误信息,执行步骤P2,否则执行步骤P9;
步骤P9:判断哈希算法是否有效,是则从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,将签名标识的值设为第一预设值,给上位机返回成功信息,返回步骤P2,否则给上位机返回错误信息,返回步骤P2;
步骤P10:判断签名标识的值是否为第一预设值,是则给上位机返回错误信息,执行步骤P2,否则执行步骤P11;
步骤P11:从外部哈希指令中提取外部摘要值并保存,给上位机返回成功信息,将签名标识的值设为第二预设值,返回步骤P2。
其中,所述步骤P9包括:
步骤e11:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e14,否则执行步骤e12;
步骤e12:判断哈希算法是否有效,是则执行步骤e13,否则给上位机返回错误信息,返回步骤P2;
步骤e13:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,给上位机返回成功信息,返回步骤P2;
步骤e14:判断哈希算法是否有效,是则执行步骤e15,否则给上位机返回错误信息,返回步骤P2;
步骤e15:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,将签名标识的值设为第一预设值,给上位机返回成功信息,返回步骤P2。
其中,所述步骤P9包括:
步骤e21:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e26,否则执行步骤e22;
步骤e22:判断哈希算法是否有效,是则执行步骤e23,否则给上位机返回错误信息,返回步骤P2;
步骤e23:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
步骤e24:判断是否处理完所有的分包得到的完整的数据包,是则给上位机返回成功信息,返回步骤P2,否则执行步骤e25;
步骤e25:将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e24;
步骤e26:判断哈希算法是否有效,是则执行步骤e27,否则给上位机返回错误信息,返回步骤P2;
步骤e27:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
步骤e28:判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,给上位机返回成功信息,将签名标识的值设为第一预设值,返回步骤P2,否则执行步骤e29;
步骤e29:将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e28。
其中,所述判断接收到的指令是否为最后一包数据具体为:判断指令中第一字节上的数据是否为预设值,是则为最后一包数据,否则不是最后一包数据。
其中,所述判断哈希算法是否合法,具体为:判断哈希算法标志是否置位,是则哈希算法有效,否则哈希算法无效;
所述判断签名算法是否合法,具体为:判断签名算法标识是否置位,是则签名算法有效,否则签名算法无效;
所述判断用户私钥是否有效具体为:判断是否定位了有效用户私钥,是则用户私钥有效,否则用户私钥无效。
其中,所述步骤P8和P9之间还包括:判断签名标识的值是否为第一预设值,是则给上位机返回错误信息,执行步骤P2,否则执行步骤P9;
所述步骤P10和P11之间还包括:判断签名标识的值是否为第二预设值,是则给上位机返回错误信息,执行步骤P2,否则执行步骤P11。
其中,所述步骤P3中根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤P2,包括:如接收到的指令为设置算法指令,则执行步骤s1-步骤s6;
步骤s1:从所述设置算法指令中获取参数,并判断参数是否正确,是则执行步骤s2,否则给上位机返回错误信息,将签名标识的值清零,执行步骤P2;
步骤s2:根据设置算法指令判断是否支持哈希算法和签名算法,是则执行步骤s3,否则给上位机返回错误信息,将签名标识的值清零,执行步骤p2;
步骤s3:设置有效哈希算法和有效签名算法;
步骤s4:根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,给上位机返回成功响应,将签名标识的值清零,返回步骤P2。
其中,所述判断参数是否正确具体为:判断所述设置算法指令中的第一预设位置上的数据是否为第一预设数据串,是则参数正确,否则参数不正确。
其中,所述步骤s2具体为:判断接收到的设置算法指令的数据域中的第一预设位置上的数据和第二预设位置上的数据是否分别为第一预设字符和第二预设数据串,是则支持,否则不支持;
所述步骤s3具体为:将哈希算法标志和签名算法标志置位。
其中,所述密钥ID和用途信息为预先通过一条指令来获取得到或从设置算法指令的数据域中获取得到。
其中,所述步骤P5中在进行签名之前还包括:执行验PIN码操作;
所述步骤P6中在进行签名之前还包括:判断是否验证过PIN码,是则继续,否则执行验PIN码操作,继续。
其中,所述执行验PIN码操作,具体包括:判断接收到的用户输入的PIN码是否与内部存储的PIN码一致,是则继续,否则给上位机返回错误信息,结束。
本发明又提供了一种确定智能密钥设备生命周期的实现装置,包括:
初始化模块:用于进行初始化;
接收模块:用于接收上位机下发的指令;
第一判断模块,用于判断接收到的指令的类型,如为哈希指令则第二判断模块工作,如为签名指令则判断签名模块工作;
判断签名模块,用于判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果,否则通知发送模块给上位机返回错误信息;
第二判断模块,用于根据所述接收模块接收到的指令判断哈希指令的类型,如为内部哈希指令则第三判断模块工作,如外部哈希指令则第四判断模块工作;
第三判断模块,用于判断哈希算法是否有效,是则计算存储模块工作,否则,否则通知发送模块给上位机返回错误信息;
计算存储模块,用于从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,通知发送模块给上位机返回成功信息;
第四判断模块,用于判断计数器的值是否达到预设值,是则通知发送模块给上位机返回错误信息,否则第五判断模块工作;
第五判断模块,用于判断签名算法和用户私钥是否有效,是则签名更新模块工作,否则通知发送模块给上位机返回错误信息;
签名更新模块,用于从外部哈希指令中提取外部摘要值,根据有效签名算法使用有效用户私钥对外部摘要值进行签名得到签名结果,更新计数器的值;
发送模块,用于将签名结果、成功信息和错误信息返回给上位机。
其中,所述计算存储模块包括:
第一判断单元,用于判断接收到的内部哈希指令是否为最后一包数据,是第二判断单元工作,否则第三判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取存储单元工作,否则通知发送模块给上位机返回错误信息;
提取存储单元:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,通知发送模块给上位机返回成功信息;
第三判断单元,用于判断哈希算法是否有效,是则提取计算单元工作,否则通知发送模块给上位机返回错误信息;
提取计算单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,通知发送模块给上位机返回成功信息。
其中,所述计算存储模块包括:
第一判断单元,用于判断接收到的内部哈希指令是否为最后一包数据,是则第四判断单元工作,否则第二判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取分包单元工作,否则通知发送模块给上位机返回错误信息;
提取分包单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
第三判断单元,用于判断是否处理完所有的分包得到的完整的数据包,是则通知发送模块给上位机返回成功信息;否则第一计算更新单元工作;
第一计算更新单元,用于将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值;
第四判断单元,用于判断哈希算法是否有效,是则提取分包更新单元工作,否则通知发送模块给上位机返回错误信息;
提取分包更新单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
第五判断单元,用于判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,通知发送模块给上位机返回成功信息;否则第二计算更新单元工作;
第二计算更新单元,用于将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值。
其中,该装置还包括:
获取判断模块,用于从所述接收模块接收到的设置算法指令中获取参数,并判断参数是否正确,是则第六判断模块工作,否则通知发送模块给上位机返回错误信息;
第六判断模块,用于根据设置算法指令判断是否支持哈希算法和签名算法,是则设置模块工作,否则通知发送模块给上位机返回错误信息;
设置模块,用于设置有效哈希算法和有效签名算法;
定位模块,用于根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,通知发送模块给上位机返回成功信息。
其中,该装置还包括:
验PIN码模块:用于执行验PIN码操作;
第七判断模块,用于判断是否验证过PIN码。
本发明还提供一种确定智能密钥设备生命周期的实现装置,包括:
初始化模块,用于进行初始化;
接收模块,用于接收上位机下发的指令;
第一判断模块,用于判断接收到的指令的类型;如为哈希指令则第三判断模块工作,如为签名指令则第二判断模块工作;
第二判断模块,用于判断签名标识的值,如为第一预设值则第一判断签名模块工作,如为第二预设值则第二判断签名模块工作;
第一判断签名模块,用于判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果,将签名标识的值清零,否则通知发送模块给上位机返回错误信息;
第二判断签名模块,用于判断计数器的值是否达到预设值;还用于当预设值未达到预设值时判断判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的外部摘要值进行签名得到签名结果,更新计数器的值,将签名标识的值清零,当计数器的值达到预设值时或签名算法和用户私钥无效时通知发送模块给上位机返回错误信息;
第三判断模块,用于根据接收到的指令判断哈希指令的类型,如为内部哈希指令则第四判断模块工作,如为外部哈希指令则第五判断模块工作;
第四判断模块,用于判断签名标识的值是否为第二预设值,是则通知发送模块给上位机返回错误信息,否则判断计算模块工作;
判断计算模块,用于判断哈希算法是否有效,是则从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,将签名标识的值设为第一预设值,通知发送模块给上位机返回成功信息,否则通知发送模块给上位机返回错误信息;
第五判断模块,用于判断签名标识的值是否为第一预设值,是则通知发送模块给上位机返回错误信息,否则提取保存模块工作;
提取保存模块,用于从外部哈希指令中提取外部摘要值并保存,通知发送模块给上位机返回成功信息,将签名标识的值设为第二预设值;
发送模块,用于将签名结果、成功信息和错误信息返回给上位机。
其中,所述判断计算模块包括:
第一判断单元,用于判断接收到的内部哈希指令是否为最后一包数据,是第二判断单元工作,否则第三判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取存储单元工作,否则通知发送模块给上位机返回错误信息;
提取存储单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,通知发送模块给上位机返回成功信息;
第三判断单元,用于判断哈希算法是否有效,是则提取计算单元工作,否则通知发送模块给上位机返回错误信息;
提取计算单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存;
设置单元,用于将签名标识的值设为第一预设值,通知发送模块给上位机返回成功信息。
其中,所述判断计算模块包括:
第一判断单元,判断接收到的内部哈希指令是否为最后一包数据,是则第四判断单元工作,否则第二判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取分包单元工作,否则通知发送模块给上位机返回错误信息;
提取分包单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
第三判断单元,判断是否处理完所有的分包得到的完整的数据包,是则通知发送模块给上位机返回成功信息,否则第一计算更新单元工作;
第一计算更新单元,用于将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值;
第四判断单元,用于判断哈希算法是否有效,是则提取分包更新单元工作,否则通知发送模块给上位机返回错误信息;
提取分包更新单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
第五判断单元,用于判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,将签名标识的值设为第一预设值,通知发送模块给上位机返回成功信息;否则第二计算更新单元工作;
第二计算更新单元,用于将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值。
其中,该装置还包括:
第六判断模块,用于判断签名标识的值是否为第一预设值,是则通知发送模块给上位机返回错误信息,否则判断计算模块工作;
第七判断模块,用于判断签名标识的值是否为第二预设值,是则通知发送模块给上位机返回错误信息,否则提取保存模块工作。
其中,该装置还包括:
获取判断模块,用于从所述接收模块接收到的设置算法指令中获取参数,并判断参数是否正确,是则第八判断模块工作,否则通知发送模块给上位机返回错误信息;
第八判断模块,用于根据设置算法指令判断是否支持哈希算法和签名算法,是则设置模块工作,否则通知发送模块给上位机返回错误信息;
设置模块,用于设置有效哈希算法和有效签名算法;
定位模块,用于根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,通知发送模块给上位机返回成功信息。
其中,该装置还包括:
验PIN码模块:用于执行验PIN码操作;
第八判断模块,用于判断是否验证过PIN码。
本发明与现有技术相比,具有以下优点:
本发明方案中当计数器里面的计数值达到了预设值时不能进行外部哈希而只能进行内部哈希,通过计数器来限制外部哈希的次数,实现了智能密钥设备生命周期的转换;在智能密钥设备生产阶段使用外部哈希可以预植过程的速度,而且在智能密钥设备出厂后的应用阶段只能使用内部哈希提高签名的安全性;保证了在不同阶段使用智能密钥设备进行签名的安全性,很好的控制生产阶段中的预植操作。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种确定智能密钥设备生命周期的实现方法的流程图;
图2和图3为本发明实施例二提供的一种确定智能密钥设备生命周期的实现方法的流程图;
图4为本发明实施例三提供的一种确定智能密钥设备生命周期的实现方法的流程图;
图5和图6为本发明实施例四提供的一种确定智能密钥设备生命周期的实现方法的流程图;
图7为本发明实施例五提供的一种确定智能密钥设备生命周期的实现装置的方框图;
图8为本发明实施例六提供的一种确定智能密钥设备生命周期的实现装置的方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种确定智能密钥设备生命周期的实现方法,如图1所示,包括:
步骤101:智能设备上电,进行初始化;
步骤102:等待接收上位机下发的指令;
步骤103:当接收到指令时,判断接收到的指令的类型,如为哈希指令则执行步骤106,如为签名指令则执行步骤104,如为其他指令则根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤102;
在本实施例中,判断指令的类型具体为:判断指令中第三字节上的数据,如为第一预设数据则为哈希指令,如为第二预设数据则为签名指令;具体的,本实施例中的第一预设数据为0x90,第二预设数据为0x9e;
步骤104:判断签名算法和用户私钥是否有效,是则执行步骤105,否则给上位机返回错误信息,返回步骤102;
具体的,判断签名算法是否有效为:判断签名算法标志是否置位,是则签名算法有效,否则签名算法无效;优选的,签名算法为SM2算法;
判断用户私钥是否有效为:判断是否定位了有效用户私钥,是则用户私钥有效,否则用户私钥无效;
步骤105:根据有效签名算法使用有效用户私钥对所述保存的内部摘要值进行签名得到签名结果并将其返回上位机,返回步骤102;
本实施例中,步骤105中在将签名结果返回给上位机后还包括:给上位机返回签名成功信息;
步骤106:根据接收到的指令判断哈希指令的类型,如为内部哈希指令则执行步骤107,如为外部哈希指令则执行步骤109;
在本实施例中,步骤106具体为:判断哈希指令中的第四字节上的数据,如为第三预设数据则为内部哈希指令,如为第四预设数据则为外部哈希指令;具体的,第三预设数据为0x80,第四预设数据为0x81;
步骤107:判断哈希算法是否有效,是则执行步骤108,否则给上位机返回错误信息,返回步骤102;
具体的,判断哈希算法是否有效为:判断哈希算法标志是否置位,是则哈希算法有效,否则哈希算法无效;优选的,哈希算法为SM3算法或SHA256算法;
步骤108:从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,给上位机返回成功信息,返回步骤102;
本实施例中,提取待签名数据具体为:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据;优选的,预设字节为第五字节;
具体的,本实施例中计算得到内部摘要值有两种实现方式,
第一种方式为:接收到全部的待签名数据后再进行计算得到内部摘要值,步骤107和步骤108替换为:
步骤e11:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e14,否则执行步骤e12;
在本实施例中,步骤e11具体为:判断内部哈希指令中第一字节上的数据是否为第五预设数据,是则为最后一包数据,否则不是最后一包数据,具体的,第五预设数据为0x00;
步骤e12:判断哈希算法是否有效,是则执行步骤e13,否则给上位机返回错误信息,返回步骤102;
步骤e13:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,给上位机返回成功信息,返回步骤102;
步骤e14:判断哈希算法是否有效,是则执行步骤e15,否则给上位机返回错误信息,返回步骤102;
步骤e15:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,给上位机返回成功信息,返回步骤102。
第二种方式为:接收到一条指令后提取待签名数据,然后对待签名数据分包,对第一包数据进行计算得到中间摘要值,再根据中间摘要值和第二包数据计算,依次类推,直到计算完本条指令中分包得到的最后一个完整的数据包,将中间摘要值和分包得到的非完整的数据包保存,在接收到下一条指令后提取待签名数据,根据保存的非完整数据包和待签名数据,再分包计算,直到接收到最后一条包含待签名数据的内部哈希指令,包括:
步骤e21:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e26,否则执行步骤e22;
步骤e22:判断哈希算法是否有效,是则执行步骤e23,否则给上位机返回错误信息,返回步骤102;
步骤e23:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
如果此时接收到的内部哈希指令中的数据为第一个待签名数据包,则步骤e23中直接对待签名数据进行分包;
步骤e24:判断是否处理完所有的分包得到的完整的数据包,是则给上位机返回成功信息,返回步骤102,否则执行步骤e25;
步骤e25:将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算,并用计算结果更新中间摘要值,返回步骤e24;
步骤e26:判断哈希算法是否有效,是则执行步骤e27,否则给上位机返回错误信息,返回步骤102;
步骤e27:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行计算,并用计算结果更新中间摘要值;
步骤e28:判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,给上位机返回成功信息,返回步骤102,否则执行步骤e29;
步骤e29:将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e28;
本实施例中以第二种实现方式为例进行说明,例如,存储包的大小为64字节,当第一次接收到内部哈希指令时,步骤e23中提取到待签名数据后将其按照64字节进行分包处理,根据有效哈希算法对第一包数据计算得到中间摘要值,再根据有效哈希算法对第二包数据和中间摘要值计算并用计算结果更新中间摘要值......如最后一包不足64字节,则在根据有效哈希算法对倒数第二包数据和中间摘要值计算,并用计算结果更新中间摘要值,保存最后一个不足64字节的数据包和中间摘要值;在接收到下一条内部哈希指令时,将步骤e23提取到待签名数据先将其存储到保存的非完整的数据包中,再将剩余待签名数据按64字节进行分包,再计算中间摘要值,以此类推,直到接收到包含待签名数据的最后一包数据的内部哈希指令时,在步骤e27中提取到待签名数据后首先将其存储到保存的非完整数据包中,再将剩余待签名数据按64字节分包,根据哈希算法对中间摘要值和第一个数据包进行计算,用计算结果更新中间摘要值......直到最后一个数据包时,根据哈希算法对中间摘要值和最后一个数据包进行计算得到内部摘要值。本实施例中,可以按照任意长度进行分包处理,以便提高签名效率;
步骤109:判断计数器的值是否达到预设值,是则给上位机返回错误信息,返回步骤102,否则执行步骤110;
步骤110:判断签名算法和用户私钥是否有效,是则执行步骤111,否则给上位机返回错误信息,返回步骤102;
步骤111:从外部哈希指令中提取外部摘要值,根据有效签名算法使用有效用户私钥对外部摘要值进行签名得到签名结果并将其返回给上位机,更新计数器的值,返回步骤102;
本实施例中,步骤111中在将签名结果返回给上位机后还包括:给上位机返回签名成功信息;
具体的,在本实施例中,更新计数器的值的方法可以为递增或递减;如计数器的初始值为0,则采用递增方式更新计数器的值;如计数器的初始值为N(N为非0正整数),则采用递减方式更新计数器的值;
在本实施例中,计数器的初始值通过上位机下发的指令来设置,上位机在发送签名指令之前先给智能密钥设备发送设置计数器指令,智能密钥设备接收到设置计数器指令时设置计数器的初始值(0或非0正整数N)。
本实施例中的有效哈希算法、有效签名算法和有效用户私钥可以预先设置,也可以通过上位机下发的指令来设置。具体的,在本实施例中,是通过上位机下发指令来设置的,则本实施例的方法还包括:如果步骤103中接收到设置算法指令,则执行步骤s1-步骤s6;
步骤s1:从所述设置算法指令中获取参数,并判断参数是否正确,是则执行步骤s2,否则给上位机返回错误信息,执行步骤102;
在本实施例中,判断参数是否正确具体为:判断设置算法指令中的第一预设位置上的数据是否为第一预设数据串,是则正确,否则不正确;具体的,第一预设位置为设置算法指令中的第三字节和第四字节,第一预设数据串为0x410xb6;
步骤s2:根据设置算法指令判断是否支持哈希算法,是则执行步骤s3,否则给上位机返回错误信息,执行步骤102;
优选的,本实施例中的哈希算法为SM3算法或SHA256算法;
在本实施例中步骤s2包括:判断接收到的设置算法指令的数据域中的第一预设位置上的数据是否为第一预设字符,是则支持,否则不支持;具体的,设置算法指令的数据域中的第一预设位置为数据域的第三字节,第一预设字符具体为0x52或0xf2,如为0x52时则表示支持SM3算法,如为0xf2则表示支持SHA256算法;
步骤s3:设置有效哈希算法;
在本实施例中,有效哈希算法具体为SM3算法,步骤s3具体为:将SM3算法标志置位;
步骤s4:根据设置算法指令判断是否支持签名算法,是则执行步骤s5,否则给上位机返回错误信息,执行步骤102;
在本实施例中,签名算法为SM2算法;
具体的,在本实施例中,步骤s4包括:判断接收到的指令的数据域中的第第二预设位置上的数据是否为第二预设数据串,是则支持,否则不支持;本实施例中的第二预设位置为设置算法在指令的数据域中的六字节和第七字节,第二预设数据串为0x0d 0x13;
步骤s5:设置有效签名算法;
在本实施例中,步骤s5具体为:将SM2算法标志置位;
本实施例中,签名算法标志和哈希算法标志置位表示对应的签名算法和哈希算法有效;
本实施例中的步骤s1、步骤s2-步骤s3、步骤s4-步骤s5的顺序可调换;
步骤s6:根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,给上位机返回成功响应,返回步骤102;
本实施例中的密钥ID和用途信息可以是预先通过一条指令来获取得到或者从设置算法指令的数据域中获取得到,优选的,本实施例中是从设置算法指令的数据域中获取得到的。
本实施中,在生产阶段中只需第一次进行签名前对用户身份进行验证,即在步骤111中进行签名之前还包括:判断是否验证过PIN码,是则执行步骤111,否则执行验PIN码操作,继续执行步骤111;
在应用阶段中每次签名前都需对用户身份进行验证,在步骤105之前还包括:执行验PIN码操作,执行步骤105;
具体的,执行验PIN码操作为:判断接收到的用户输入的PIN码是否与内部存储的PIN码一致,是则继续,否则给上位机返回错误信息,结束。
本实施例一中的方法在COS层设计一个计数器,该计数器用以计数设备外的哈希次数。当计数器的值小于预设值时,智能密钥设备处于生产阶段,当计数器的值达到预设值时,智能密钥设备处于应用阶段,配合生产流程使用该计数器,以便切换智能密钥设备的生命周期转换。在生产阶段支持在设备外进行哈希计算在设备内进行签名,提高了预植速度;而在出厂之后的应用阶段,哈希计算和签名计算均在设备内执行,提高了数据签名的安全性;通过计数器即可以实现哈希计算在设备内进行又可以实现哈希计算在设备外进行,保证了使用智能密钥设备进行签名的安全性,并且能明确确定智能密钥设备的生产阶段。
实施例二
本发明实施例二提供一种确定智能密钥设备生命周期的实现方法,在生产阶段接收到内部哈希指令时对提取的待签名数据进行分包进行计算得到的内部摘要值,且外部哈希是通过一条指令来实现的,如图2和图3所示,包括:
步骤201:智能设备上电,进行初始化;
步骤202:等待接收上位机下发的指令;
步骤203:当接收到指令时,判断接收到的指令的类型,如为哈希指令则执行步骤206,如为签名指令则执行步骤204,如为其他指令则根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤202;
步骤204:判断签名算法和用户私钥是否有效,是则执行步骤205,否则给上位机返回错误信息,返回步骤202;
步骤205:根据有效签名算法使用有效用户私钥对所述保存的内部摘要值进行签名得到签名结果并将其返回上位机,返回步骤202;
本实施例中,步骤205中在将签名结果返回给上位机后还包括:给上位机返回签名成功信息;
步骤206:根据接收到的指令判断哈希指令的类型,如为内部哈希指令则执行步骤207,如为外部哈希指令则执行步骤216;
步骤207:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤212,否则执行步骤208;
步骤208:判断哈希算法是否有效,是则执行步骤209,否则给上位机返回错误信息,返回步骤202;
步骤209:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
在本实施例中,如果此时接收到的内部哈希指令为第一个数据包的指令,则步骤209中直接对待签名数据进行分包;
步骤210:判断是否处理完所有的分包得到的完整的数据包,是则给上位机返回成功信息,返回步骤202,否则执行步骤211;
步骤211:将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤210;
步骤212:判断哈希算法是否有效,是则执行步骤213,否则给上位机返回错误信息,返回步骤202;
步骤213:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
步骤214:判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,给上位机返回成功信息,返回步骤202,否则执行步骤215;
步骤215:将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤214;
步骤216:判断计数器的值是否达到预设值,是则给上位机返回错误信息,返回步骤202,否则执行步骤217;
在本实施例中,如计数器的初始值为0,则步骤216为:判断当前计数器的值是否为N,是则给上位机返回错误信息,执行步骤202,否则执行步骤217;如计数器的初始值为N,则步骤216为:判断当前计数器的值是否为0,是则给上位机返回错误信息,执行步骤202,否则执行步骤217;
步骤217:判断签名算法和用户私钥是否有效,是则执行步骤218,否则给上位机返回错误信息,返回步骤202;
步骤218:从外部哈希指令中提取外部摘要值,根据有效签名算法使用有效用户私钥对外部摘要值进行签名得到签名结果并将其返回给上位机,更新计数器的值,返回步骤202;
本实施例中,步骤218中在将签名结果返回给上位机后还包括:给上位机返回签名成功信息;
在本实施例中,更新计数器的值的实现方案可参考实施例一,在此不再赘述。
在本实现方案中,有效哈希算法、有效签名算法和有效用户私钥可以预先设置,也可以通过上位机下发的指令来设置,具体参考实施例一。
本实施中,在生产阶段的预植过程中第一次执行签名之前还可对用户输入的PIN码进行验证,即在步骤218中进行签名之前还包括:判断是否验证过PIN码,是则进行,否则执行验PIN码操作,继续;
在应用阶段是每次签名之前都可对用户输入的PIN码进行验证,即步骤205之前还包括:执行验PIN码操作,执行步骤205;
具体的,执行验PIN码操作为:判断接收到的用户输入的PIN码是否与内部存储的PIN码一致,是则继续,否则给上位机返回错误信息,结束。
本实施例二中的方法在COS层设计一个计数器,该计数器用以计数外部哈希的次数。当计数器的值小于预设值时,智能密钥设备处于生产阶段,当计数器的值达到预设值时,智能密钥设备处于应用阶段,配合生产流程使用该计数器,以便切换智能密钥设备的生命周期转换。在生产阶段支持在设备外进行哈希计算在设备内进行签名,提高了预植速度;在出厂之后的应用阶段,哈希计算和签名计算均在设备内执行,提高了数据签名的安全性;通过计数器即可以实现哈希计算在设备内进行又可以实现哈希计算在设备外进行,保证了使用智能密钥设备进行签名的安全性,并且能明确确定智能密钥设备的生产阶段。在应用阶段,通过分包存储待签名数据并对每包进行计算得到内部摘要,可提高签名效率。
实施例三
本发明实施例三提供一种确定智能密钥设备生命周期的实现方法,在签名之前需验证PIN码,且外部哈希是通过一条指令来实现的,如图4所示,包括:
步骤301:智能设备上电,进行初始化;
在本实施例中,进行初始化包括设置计数器的初始值,复位验码标志,将签名标识的值设为0;
步骤302:等待接收上位机下发的指令;
步骤303:当接收到指令时,判断接收到的指令的类型,如为哈希指令则执行步骤310,如为签名指令则执行步骤304,如为其他指令则根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤302;
在本实施例中,判断指令的类型具体为:判断指令中第三字节上的数据,如为第一预设数据则为哈希指令,如为第二预设数据则为签名指令;具体的,本实施例中的第一预设数据为0x90,第二预设数据为0x9e;
步骤304:判断签名标识的值,如为第一预设值则执行步骤305;如为第二预设值则执行步骤307,如为其他值则返回错误信息,返回步骤302;
步骤305:判断签名算法和用户私钥是否有效,是则执行步骤306,否则给上位机返回错误信息,返回步骤302;
具体的,判断签名算法是否有效为:判断签名算法标志是否置位,是则签名算法有效,否则签名算法无效;优选的,签名算法为SM2算法;
判断用户私钥是否有效为:判断是否定位了有效用户私钥,是则用户私钥有效,否则用户私钥无效;
步骤306:根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果并将其返回给上位机,将签名标识的值清零,返回步骤302;
本实施例中,步骤306中在将签名结果返回给上位机后还包括:给上位机返回签名成功信息;
步骤307:判断计数器的值是否达到预设值,是则给上位机返回错误信息,返回步骤302,否则执行步骤308;
步骤308:判断签名算法和用户私钥是否有效,是则执行步骤309;否则给上位机返回错误信息,返回步骤302;
在本实施例中,步骤307和步骤308没有先后顺序,优选的本实施例中先执行步骤307再执行步骤308;
步骤309:根据有效签名算法使用有效用户私钥对保存的外部摘要值进行签名得到签名结果并将其返回给上位机,更新计数器的值,将签名标识的值清零,返回步骤302;
本实施例中更新计数器的值的方法有多种实现方法,具体的可参照实施例一中的实现方法;
步骤310:根据接收到的指令判断哈希指令的类型,如为内部哈希指令则执行步骤311,如为外部哈希指令则执行步骤314;
在本实施例中,步骤310具体为:判断哈希指令中的第四字节上的数据,如为第三预设数据则为内部哈希指令,如为第四预设数据则为外部哈希指令;具体的,第三预设数据为0x80,第四预设数据为0x81;
步骤311:判断签名标识的值是否为第二预设值,是则给上位机返回错误信息,执行步骤302,否则执行步骤312;
步骤312:判断哈希算法是否有效,是则执行步骤313,否则给上位机返回错误信息,返回步骤302;
具体的,判断哈希算法是否有效为:判断哈希算法标志是否置位,是则哈希算法有效,否则哈希算法无效;优选的,哈希算法为SM3算法或SHA256算法;
步骤313:从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,将签名标识的值设为第一预设值,给上位机返回成功信息,返回步骤302;
本实施例中,步骤313中计算得到摘要的方式有两种方式;第一种方式包括步骤e11-步骤e15;
步骤e11:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e14,否则执行步骤e12;
在本实施例中,步骤e11具体为:判断计算签名指令中第一字节上的数据是否为第五预设数据,是则为最后一包数据,否则不是最后一包数据,具体的,第五预设数据为0x00;
步骤e12:判断哈希算法是否有效,是则执行步骤e13,否则给上位机返回错误信息,返回步骤302;
步骤e13:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,给上位机返回成功信息,返回步骤302;
步骤e14:判断哈希算法是否有效,是则执行步骤e15,否则给上位机返回错误信息,返回步骤302;
步骤e15:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,将签名标识的值设为第一预设值,给上位机返回成功信息,返回步骤302;
第二种方式包括步骤e21-步骤e29;
步骤e21:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e26,否则执行步骤e22;
步骤e22:判断哈希算法是否有效,是则执行步骤e23,否则给上位机返回错误信息,返回步骤302;
步骤e23:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
步骤e24:判断是否处理完所有的分包得到的完整的数据包,是则给上位机返回成功信息,返回步骤302,否则执行步骤e25;
步骤e25:将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e24;
步骤e26:判断哈希算法是否有效,是则执行步骤e27,否则给上位机返回错误信息,返回步骤302;
步骤e27:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
步骤e28:判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,给上位机返回成功信息,将签名标识的值设为第一预设值,返回步骤302,否则执行步骤e29;
步骤e29:将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e28;
步骤314:判断签名标识的值是否为第一预设值,是则给上位机返回错误信息,执行步骤302,否则执行步骤315;
步骤315:从外部哈希指令中提取外部摘要值并保存,给上位机返回成功信息,将签名标识的值设为第二预设值,返回步骤302。
本实施例中的有效哈希算法、有效签名算法和有效用户私钥可以预先设置,也可以通过上位机下发的指令来设置。具体的,在本实施例中,是通过上位机下发指令来设置的,则本实施例的方法还包括:如果步骤303中接收到设置算法指令,则执行步骤s1-步骤s6;
步骤s1:从所述设置算法指令中获取参数,并判断参数是否正确,是则执行步骤s2,否则给上位机返回错误信息,执行步骤302;
在本实施例中,判断参数是否正确具体为:判断设置算法指令中的第一预设位置上的数据是否为第一预设数据串,是则正确,否则不正确;具体的,第一预设位置为设置算法指令中的第三字节和第四字节,第一预设数据串为0x410xb6;
步骤s2:根据设置算法指令判断是否支持哈希算法,是则执行步骤s3,否则给上位机返回错误信息,执行步骤302;
优选的,本实施例中的哈希算法为SM3算法或SHA256算法;
在本实施例中步骤s2包括:判断接收到的设置算法指令的数据域中的第一预设位置上的数据是否为第一预设字符,是则支持,否则不支持;具体的,设置算法指令的数据域中的第一预设位置为数据域的第三字节,第一预设字符具体为0x52或0xf2,如为0x52时则表示支持SM3算法,如为0xf2则表示支持SHA256算法;
步骤s3:设置有效哈希算法;
在本实施例中,有效哈希算法具体为SM3算法,步骤s3具体为:将SM3算法标志置位;
步骤s4:根据设置算法指令判断是否支持签名算法,是则执行步骤s5,否则给上位机返回错误信息,执行步骤302;
在本实施例中,签名算法为SM2算法;
具体的,在本实施例中,步骤s4包括:判断接收到的指令的数据域中的第第二预设位置上的数据是否为第二预设数据串,是则支持,否则不支持;第二预设位置为设置算法指令的数据域中的第六字节和第七字节,第二预设数据串为0x0d 0x13;
步骤s5:设置有效签名算法;
在本实施例中,步骤s5具体为:将SM2算法标志置位;
本实施例中,签名算法标志和哈希算法标志置位表示对应的签名算法和哈希算法有效;
本实施例中的步骤s1、步骤s2-步骤s3、步骤s4-步骤s5的顺序可调换;
步骤s6:根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,给上位机返回成功响应,返回步骤302;
本实施例中的密钥ID和用途信息可以是预先通过一条指令来获取得到或者从设置算法指令的数据域中获取得到,优选的,本实施例中是从设置算法指令的数据域中获取得到的。
本实施中,在生产阶段中只需第一进行签名前对用户身份进行验证,即在步骤309之前还包括:判断是否验证过PIN码,是则执行步骤309,否则执行验PIN码操作,继续执行步骤309;
在应用阶段中每次签名前都需对用户身份进行验证,在步骤306之前还包括:执行验PIN码操作,执行步骤306;
具体的,执行验PIN码操作为:判断接收到的用户输入的PIN码是否与内部存储的PIN码一致,是则继续,否则给上位机返回错误信息,结束。
在本实施例中,为防止上位机重复发送相同的数据包,则在步骤311和步骤312之间还包括:判断签名标识的值是否为第一预设值,是则给上位机返回错误信息,执行步骤302,否则执行步骤312;所述步骤314和315之间还包括:判断签名标识的值是否为第二预设值,是则给上位机返回错误信息,执行步骤302,否则执行步骤315。
在本发明的实施例中,是生产阶段的签名过程通过两条指令实现,即获取外部摘要值和进行签名用两条指令实现。设置的计数器在达到预设值则表示智能密钥设备处于应用阶段,在内部计算内部摘要值并签名,提高签名的安全性;计数器的值未到达预设值时表示智能密钥设备处于生产阶段,只能在外部计算哈希值在内部签名,提高预植速度。且在应用阶段的每次外部签名之前还可进行验PIN码操作,在生产阶段的第一次签名前进行验PIN码操作,以后不需在进行验PIN码操作,进一步的提高了签名的安全性。
实施例四
本发明实施例四提供一种确定智能密钥设备生命周期的实现方法,在生产阶段的接收到内部哈希指令时先将提取的待签名数据存储到缓存区中,接收完所有的待签名数据在对其进行计算得到的内部摘要值,且外部哈希是通过两条指令来实现的,如图5和图6所示,包括:
步骤401:智能设备上电,进行初始化;
在本实施例中,进行初始化包括设置计数器的初始值,复位验码标志,将签名标识的值设为0;
步骤402:等待接收上位机下发的指令;
步骤403:当接收到指令时,判断接收到的指令的类型,如为哈希指令则执行步骤410,如为签名指令则执行步骤404,如为其他指令则根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤402;
在本实施例中,判断指令的类型具体为:通过接收到指令中的预设位置上的数据来判断指令的类型,如为第一预设数据则为哈希指令,如为第二预设数据则为签名指令;优选的,预设位置为第三字节;第一预设数据为0x90,第二预设数据为0x9e;
例如,接收到的指令中前四个字节的数据为00/10 2a 90 80,则指令的类型为哈希指令;
步骤404:判断签名标识的值,如为第一预设值则执行步骤405;如为第二预设值则执行步骤407,如为其他值则返回错误信息,返回步骤402;
在本实施例中,判断计算签名方式具体为:通过接收到哈希指令中的预设位置上的数据来判断计算签名方式,如为第三数据则为内部摘要值签名,如为第四数据则为外部摘要值签名;优选的,预设位置为第四字节;第三数据为0x00,第四数据为0x01;
步骤405:判断签名算法和用户私钥是否有效,是则执行步骤406,否则给上位机返回错误信息,返回步骤402;
步骤406:根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果并将其返回给上位机,将签名标识的值清零,返回步骤402;
本实施例中,步骤406中在将签名结果返回给上位机后还包括:给上位机返回签名成功信息;
本实施例中,步骤405和步骤406中的判断顺序可调换,即可先判断签名算法和用户私钥有效后,在判断签名标识是否置位,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果并将其返回给上位机;
步骤407:判断计数器的值是否达到预设值,是则给上位机返回错误信息,返回步骤402,否则执行步骤408;
在本实施例中,如计数器的初始值为0,则步骤407为:判断当前计数器的值是否为N,是则给上位机返回错误信息,执行步骤402,否则执行步骤408;如计数器的初始值为N,则步骤407为:判断当前计数器的值是否为0,是则给上位机返回错误信息,执行步骤402,否则执行步骤408;其中N为预先设置好的正整数;
步骤408:判断签名算法和用户私钥是否有效,是则执行步骤409,否则给上位机返回错误信息,返回步骤402;
在本实施例中,步骤407和步骤408没有先后顺序,优选的本实施例中先执行步骤407再执行步骤408;
步骤409:根据有效签名算法使用有效用户私钥对保存的外部摘要值进行签名得到签名结果并将其返回给上位机,更新计数器的值,将签名标识的值清零,返回步骤402;
本实施例中,步骤409中在将签名结果返回给上位机后还包括:给上位机返回签名成功信息;
具体的,在本实施例中,更新计数器的值的方法可以为递增或递减;如计数器的初始值为0,则采用递增方式更新计数器的值;如计数器的初始值为N(N为非0正整数),则采用递减方式更新计数器的值;
在本实施例中,计数器的初始值通过上位机下发的指令来设置,上位机在发送签名指令之前先给智能密钥设备发送设置计数器指令,智能密钥设备接收到设置计数器指令时设置计数器的初始值(0或非0正整数N);
步骤410:根据接收到的指令判断哈希指令的类型,如为内部哈希指令则执行步骤411,如为外部哈希指令则执行步骤417;
在本实施例中,步骤410具体为:判断接收到的指令中的预设位置上的数据来判断哈希指令的类型,如为第五则为内部哈希指令,如为第六数据则为外部哈希指令;具体的,预设位置为第四字节,第五数据为0x80,第六数据为0x81;
步骤411:判断签名标识的值是否为第二预设值,是则给上位机返回错误信息,执行步骤402,否则执行步骤412;
步骤412:判断接收到的哈希指令是否为最后一包数据,是则执行步骤415,否则执行步骤413;
在本实施例中,步骤412具体为:判断哈希指令中第一字节上的数据是否为第五预设数据,是则为最后一包数据,否则不是最后一包数据,具体的,第五预设数据为0x00;
步骤413:判断哈希算法是否有效,是则执行步骤414,否则给上位机返回错误信息,返回步骤402;
步骤414:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,给上位机返回成功信息,返回步骤402;
步骤415:判断哈希算法是否有效,是则执行步骤416,否则给上位机返回错误信息,返回步骤402;
步骤416:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,将签名标识的设为第一预设值,给上位机返回成功信息,返回步骤402;
步骤417:判断签名标识的值是否为第一预设值,是则给上位机返回错误信息,执行步骤402,否则执行步骤418;
步骤418:从外部哈希指令中提取外部摘要值并保存,给上位机返回成功信息,将签名标识的值设为第二预设值,返回步骤402。
在本实施例中,如在步骤403中接收到指令为设置算法指令则进行设置算法操作,实现过程可参照上述步骤A1-步骤A6,在此不再赘述。
本实施中,在智能密钥设备的生产阶段的预植过程中第一次执行签名之前还可对用户输入的PIN码进行验证,即在步骤418之前还包括:判断是否验证过PIN码,是则执行步骤418,否则执行验PIN码操作,继续执行步骤418;
在智能密钥设备的应用阶段中每次执行签名之前均可对用户输入的PIN码进行验证,即步骤406之前还包括:执行验PIN码操作,执行步骤406;
具体的,执行验PIN码操作为:判断接收到的用户输入的PIN码是否与内部存储的PIN码一致,是则继续,否则给上位机返回错误信息,结束。
本实施例四中的方法在COS层设计一个计数器,该计数器用以计数外部哈希的次数。当计数器的值小于预设值时,智能密钥设备处于生产阶段,当计数器的值达到预设值时,智能密钥设备处于应用阶段,配合生产流程使用该计数器,以便切换智能密钥设备的生命周期转换。在生产阶段支持在设备外进行哈希计算在设备内进行签名,提高了预植速度;在出厂之后的应用阶段,哈希计算和签名计算均在设备内执行,提高了数据签名的安全性;通过计数器即可以实现哈希计算在设备内进行又可以实现哈希计算在设备外进行,保证了使用智能密钥设备进行签名的安全性,并且能明确确定智能密钥设备的生产阶段。生产阶段的提取外部哈希值和进行签名通过两条指令来实现,分工明确。
本实施例四中的方法在COS层设计一个计数器,该计数器用以计数外部哈希的次数。当计数器的值小于预设值时,智能密钥设备处于生产阶段,当计数器的值达到预设值时,智能密钥设备处于应用阶段,配合生产流程使用该计数器,以便切换智能密钥设备的生命周期转换。在生产阶段支持在设备外进行哈希计算在设备内进行签名,提高了预植速度;在出厂之后的应用阶段,哈希计算和签名计算均在设备内执行,提高了数据签名的安全性;通过计数器即可以实现哈希计算在设备内进行又可以实现哈希计算在设备外进行,保证了使用智能密钥设备进行签名的安全性,并且能明确确定智能密钥设备的生产阶段。且在生产阶段只需第一次签名时执行验PIN码操作,以后可直接进行签名,而在应用阶段,则需要每次签名前都进行执行验PIN码操作,进一步的提高了签名的安全性。
实施例五
本发明实施例五提供一种确定智能密钥设备生命周期的实现装置,如图7所示,包括:
初始化模块701,用于进行初始化;
接收模块702,用于接收上位机下发的指令;
第一判断模块703,用于判断接收到的指令的类型,如为哈希指令则第二判断模块705工作,如为签名指令则判断签名模块704工作;
在本实施例中,第一判断模块703具体用于判断指令中第三字节上的数据,如为第一预设数据则为哈希指令,如为第二预设数据则为签名指令;具体的,本实施例中的第一预设数据为0x90,第二预设数据为0x9e;
判断签名模块704,用于判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对所述保存的内部摘要值进行签名得到签名结果,否则通知发送模块711给上位机返回错误信息;
本实施例中,判断签名模块704判断签名算法和用户私钥是否有效具体为:
判断签名算法标志是否置位,是则签名算法有效,否则签名算法无效;优选的,签名算法为SM2算法;
判断是否定位了有效用户私钥,是则用户私钥有效,否则用户私钥无效;
第二判断模块705,用于根据所述接收模块接收到的指令判断哈希指令的类型,如为内部哈希指令则第三判断模块706工作,如外部哈希指令则第四判断模块708工作;
具体的,本实施例中的第二判断模块705具体用于判断哈希指令中的第四字节上的数据,如为第三预设数据则为内部哈希指令,如为第四预设数据则为外部哈希指令;具体的,第三预设数据为0x80,第四预设数据为0x81;
第三判断模块706,用于判断哈希算法是否有效,是则计算存储模块707工作,否则,否则通知发送模块711给上位机返回错误信息;
具体的,第三判断模块706,具体用于判断哈希算法标志是否置位,是则哈希算法有效,否则哈希算法无效;优选的,哈希算法为SM3算法或SHA256算法;
计算存储模块707,用于从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,通知发送模块711给上位机返回成功信息;
本实施例中的计算存储模块707根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据;优选的,预设字节为第五字节;
第四判断模块708,用于判断计数器的值是否达到预设值,是则通知发送模块711给上位机返回错误信息,否则第五判断模块709工作;
第五判断模块709,用于判断签名算法和用户私钥是否有效,是则签名更新模块710工作,否则通知发送模块711给上位机返回错误信息;
签名更新模块710,用于从外部哈希指令中提取外部摘要值,根据有效签名算法使用有效用户私钥对外部摘要值进行签名得到签名结果,更新计数器的值;
在本实施例中,签名更新模块710用于更新计数器的值的方法可以为递增或递减;如计数器的初始值为0,则采用递增方式更新计数器的值;如计数器的初始值为N(N为非0正整数),则采用递减方式更新计数器的值;
在本实施例中,计数器的初始值通过上位机下发的指令来设置,上位机在发送签名指令之前先给智能密钥设备发送设置计数器指令,智能密钥设备接收到设置计数器指令时设置计数器的初始值(0或非0正整数N);
发送模块711,用于将签名结果、成功信息和错误信息返回给上位机。
本实施例中的计算存储模块707的实现方案有两种方式,第一种方式,计算存储模块707包括:
第一判断单元,用于判断接收到的内部哈希指令是否为最后一包数据,是第二判断单元工作,否则第三判断单元工作;
本实施例中的第一判断单元具体用于判断计算签名指令中第一字节上的数据是否为第五预设数据,是则为最后一包数据,否则不是最后一包数据,具体的,第五预设数据为0x00;
第二判断单元,用于判断哈希算法是否有效,是则提取存储单元工作,否则通知发送模块711给上位机返回错误信息;
提取存储单元:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,通知发送模块711给上位机返回成功信息;
第三判断单元,用于判断哈希算法是否有效,是则提取计算单元工作,否则通知发送模块711给上位机返回错误信息;
提取计算单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,通知发送模块711给上位机返回成功信息。
第二种方式,计算存储模块707包括:
第一判断单元,用于判断接收到的内部哈希指令是否为最后一包数据,是则第四判断单元工作,否则第二判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取分包单元工作,否则通知发送模块711给上位机返回错误信息;
提取分包单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
如果此时接收到的内部哈希指令中的数据为第一个待签名数据包,则步骤提取分包单元直接对待签名数据进行分包;
第三判断单元,用于判断是否处理完所有的分包得到的完整的数据包,是则通知发送模块711给上位机返回成功信息;否则第一计算更新单元工作;
第一计算更新单元,用于将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值;
第四判断单元,用于判断哈希算法是否有效,是则提取分包更新单元工作,否则通知发送模块711给上位机返回错误信息;
提取分包更新单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
第五判断单元,用于判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,通知发送模块711给上位机返回成功信息;否则第二计算更新单元工作;
第二计算更新单元,用于将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值。
本实施例中如接收模块701接收到设置算法指令,则该装置还可包括:
获取判断模块,用于从接收模块701接收到的设置算法指令中获取参数,并判断参数是否正确,是则第六判断模块工作,否则通知发送模块711给上位机返回错误信息;
在本实施例中,获取判断模块具体用于判断设置算法指令中的第一预设位置上的数据是否为第一预设数据串,是则正确,否则不正确;具体的,第一预设位置为第三字节和第四字节,第一预设数据串为0x410xb6;
第六判断模块,用于根据设置算法指令判断是否支持哈希算法和签名算法,是则设置模块工作,否则通知发送模块711给上位机返回错误信息;
本实施例中的第六判断模块具体用于判断接收到的设置算法指令的数据域中的第一预设位置上的数据是否为第一预设字符且第二预设位置上的数据为第二预设数据串,是则支持,否则不支持;具体的,设置算法指令的数据域中的第一预设位置为设置算法指令的数据域中的第三字节,第一预设字符具体为0x52或0xf2,如为0x52时则表示支持SM3算法,如为0xf2则表示支持SHA256算法;第二预设位置为设置算法指令的数据域中的六字节和第七字节,第二预设数据串为0x0d 0x13,签名算法为SM2算法;
设置模块,用于设置有效哈希算法和有效签名算法;
本实施例中的设置模块具体用于将SM3算法标志置位,将SM2算法标志置位;
定位模块,用于根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,通知发送模块711给上位机返回成功信息;
本实施例中的密钥ID和用途信息可以是预先通过一条指令来获取得到或者从设置算法指令的数据域中获取得到,优选的,本实施例中是从设置算法指令的数据域中获取得到的。
为提高本实施例装置进行签名的安全性,该装置还可包括:
验PIN码模块:用于执行验PIN码操作;
第七判断模块,用于判断是否验证过PIN码。
实施例六
本发明实施例六提供一种确定智能密钥设备生命周期的实现装置,如图8所示,包括:
初始化模块801,用于进行初始化;
接收模块802,用于接收上位机下发的指令;
第一判断模块803,用于判断接收到的指令的类型;如为哈希指令则第三判断模块807工作,如为签名指令则第二判断模块804工作;
本实施例中的第一判断模块具体用于判断指令中第三字节上的数据,如为第一预设数据则为哈希指令,如为第二预设数据则为签名指令;具体的,本实施例中的第一预设数据为0x90,第二预设数据为0x9e;
第二判断模块804,用于判断签名标识的值,如为第一预设值则第一判断签名模块805工作,如为第二预设值则第二判断签名模块806工作;
第一判断签名模块805,用于判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果,将签名标识的值清零,否则通知发送模块812给上位机返回错误信息;
本实施例中的第一判断签名模块805判断签名算法和用户私钥是否有效具体为:
判断签名算法标志是否置位,是则签名算法有效,否则签名算法无效;优选的,签名算法为SM2算法;
判断是否定位了有效用户私钥,是则用户私钥有效,否则用户私钥无效;
第二判断签名模块806,用于判断计数器的值是否达到预设值;还用于当预设值未达到预设值时判断判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的外部摘要值进行签名得到签名结果,更新计数器的值,将签名标识的值清零,当计数器的值达到预设值时或签名算法和用户私钥无效时通知发送模块812给上位机返回错误信息;
第三判断模块807,用于根据接收到的指令判断哈希指令的类型,如为内部哈希指令则第四判断模块808工作,如为外部哈希指令则第五判断模块810工作;
本实施例中的第三判断模块807具体用于判断哈希指令中的第四字节上的数据,如为第三预设数据则为内部哈希指令,如为第四预设数据则为外部哈希指令;具体的,第三预设数据为0x80,第四预设数据为0x81;
第四判断模块808,用于判断签名标识的值是否为第二预设值,是则通知发送模块812给上位机返回错误信息,否则判断计算模块809工作;
判断计算模块809,用于判断哈希算法是否有效,是则从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,将签名标识的值设为第一预设值,通知发送模块812给上位机返回成功信息,否则通知发送模块812给上位机返回错误信息;
本实施例中的判断计算模块809判断哈希算法是否有效,具体为:判断哈希算法标志是否置位,是则哈希算法有效,否则哈希算法无效;优选的,哈希算法为SM3算法或SHA256算法;
第五判断模块810,用于判断签名标识的值是否为第一预设值,是则通知发送模块812给上位机返回错误信息,否则提取保存模块811工作;
提取保存模块811,用于从外部哈希指令中提取外部摘要值并保存,通知发送模块812给上位机返回成功信息,将签名标识的值设为第二预设值;
发送模块812,用于将签名结果、成功信息和错误信息返回给上位机。
本实施例中的判断计算模块809有两种实现方式:
第一种方式,判断计算模块809包括:
第一判断单元,用于判断接收到的内部哈希指令是否为最后一包数据,是第二判断单元工作,否则第三判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取存储单元工作,否则通知发送模块812给上位机返回错误信息;
提取存储单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,通知发送模块812给上位机返回成功信息;
第三判断单元,用于判断哈希算法是否有效,是则提取计算单元工作,否则通知发送模块812给上位机返回错误信息;
提取计算单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存;
设置单元,用于将签名标识的值设为第一预设值,通知发送模块812给上位机返回成功信息。
第二种方式,判断计算模块809包括:
第一判断单元,判断接收到的内部哈希指令是否为最后一包数据,是则第四判断单元工作,否则第二判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取分包单元工作,否则通知发送模块812给上位机返回错误信息;
提取分包单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
第三判断单元,判断是否处理完所有的分包得到的完整的数据包,是则通知发送模块812给上位机返回成功信息,否则第一计算更新单元工作;
第一计算更新单元,用于将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值;
第四判断单元,用于判断哈希算法是否有效,是则提取分包更新单元工作,否则通知发送模块812给上位机返回错误信息;
提取分包更新单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
第五判断单元,用于判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,将签名标识的值设为第一预设值,通知发送模块812给上位机返回成功信息;否则第二计算更新单元工作;
第二计算更新单元,用于将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值。
为防止本实施例中的装置中的接收模块801接收到相同的数据也进行处理,则该装置该可包括:第六判断模块,用于判断签名标识的值是否为第一预设值,是则通知发送模块812给上位机返回错误信息,否则判断计算模块809工作;
第七判断模块,用于判断签名标识的值是否为第二预设值,是则通知发送模块812给上位机返回错误信息,否则提取保存模块811工作。
本实施例中如接收模块801接收到设置算法指令,则该装置还可包括:
获取判断模块,用于从接收模块801接收到的设置算法指令中获取参数,并判断参数是否正确,是则第八判断模块工作,否则通知发送模块812给上位机返回错误信息;
第八判断模块,用于根据设置算法指令判断是否支持哈希算法和签名算法,是则设置模块工作,否则通知发送模块812给上位机返回错误信息;
设置模块,用于设置有效哈希算法和有效签名算法;
定位模块,用于根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,通知发送模块812给上位机返回成功信息;
本实施例中的获取判断模块、第八判断模块、设置模块、定位模块的具体实现过程和参照实施例五,在此不再赘述。
为提高本实施例装置进行签名的安全性,该装置还可包括:
验PIN码模块:用于执行验PIN码操作;
第八判断模块,用于判断是否验证过PIN码。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (34)
1.一种确定智能密钥设备生命周期的实现方法,其特征在于,包括:
步骤a:智能密钥设备上电,进行初始化;
步骤b:等待接收上位机下发的指令;
步骤c:当接收到指令时,判断接收到的指令的类型,如为哈希指令则执行步骤e,如为签名指令则执行步骤d,如为其他指令则根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤b;
步骤d:判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果并将其返回给上位机,返回步骤b;否则给上位机返回错误信息,返回步骤b;
步骤e:根据接收到的指令判断哈希指令的类型,如为内部哈希指令则执行步骤f,如为外部哈希指令则执行步骤g;
步骤f:判断哈希算法是否有效,是则从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,给上位机返回成功信息,返回步骤b,否则给上位机返回错误信息,返回步骤b;
步骤g:判断计数器的值是否达到预设值,是则给上位机返回错误信息,返回步骤b,否则执行步骤h;
步骤h:判断签名算法和用户私钥是否有效,是则从外部哈希指令中提取外部摘要值,根据有效签名算法使用有效用户私钥对外部摘要值进行签名得到签名结果并将其返回给上位机,更新计数器的值,返回步骤b;否则给上位机返回错误信息,返回步骤b。
2.如权利要求1所述的方法,所述步骤f包括:
步骤e11:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e14,否则执行步骤e12;
步骤e12:判断哈希算法是否有效,是则执行步骤e13,否则给上位机返回错误信息,返回步骤b;
步骤e13:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,给上位机返回成功信息,返回步骤b;
步骤e14:判断哈希算法是否有效,是则执行步骤e15,否则给上位机返回错误信息,返回步骤b;
步骤e15:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,给上位机返回成功信息,返回步骤b。
3.如权利要求1所述的方法,其特征在于,所述步骤f包括:
步骤e21:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e26,否则执行步骤e22;
步骤e22:判断哈希算法是否有效,是则执行步骤e23,否则给上位机返回错误信息,返回步骤b;
步骤e23:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
步骤e24:判断是否处理完所有的分包得到的完整的数据包,是则给上位机返回成功信息,返回步骤b,否则执行步骤e25;
步骤e25:将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e24;
步骤e26:判断哈希算法是否有效,是则执行步骤e27,否则给上位机返回错误信息,返回步骤b;
步骤e27:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
步骤e28:判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,给上位机返回成功信息,返回步骤b,否则执行步骤e29;
步骤e29:将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e28。
4.如权利要求2或3所述的方法,其特征在于,所述判断接收到的指令是否为最后一包数据具体为:判断指令中第一字节上的数据是否为预设值,是则为最后一包数据,否则不是最后一包数据。
5.如权利要求2或3所述的方法,其特征在于,
所述判断哈希算法是否有效,具体为:判断哈希算法标志是否置位,是则哈希算法有效,否则哈希算法无效;
所述判断签名算法是否有效,具体为:判断签名算法标识是否置位,是则签名算法有效,否则签名算法无效;
所述判断用户私钥是否有效,具体为:判断是否定位了有效用户私钥,是则用户私钥有效,否则用户私钥无效。
6.如权利要求1所述的方法,其特征在于,所述步骤c中根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤b,包括:如接收到的指令为设置算法指令,则执行步骤s1-步骤s6;
步骤s1:从所述设置算法指令中获取参数,并判断参数是否正确,是则执行步骤s2,否则给上位机返回错误信息,执行步骤b;
步骤s2:根据设置算法指令判断是否支持哈希算法和签名算法,是则执行步骤s3,否则给上位机返回错误信息,执行步骤b;
步骤s3:设置有效哈希算法和有效签名算法;
步骤s4:根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,给上位机返回成功响应,返回步骤b。
7.如权利要求6所述的方法,其特征在于,所述判断参数是否正确具体为:判断所述设置算法指令中的第一预设位置上的数据是否为第一预设数据串,是则参数正确,否则参数不正确。
8.如权利要求6所述的方法,其特征在于,所述步骤s2具体为:判断接收到的设置算法指令的数据域中的第一预设位置上的数据和第二预设位置上的数据是否分别为第一预设字符和第二预设数据串,是则支持,否则不支持;
所述步骤s3具体为:将哈希算法标志和签名算法标志置位。
9.如权利要求6所述的方法,其特征在于,所述密钥ID和用途信息为预先通过一条指令来获取得到或从设置算法指令的数据域中获取得到。
10.如权利要求1所述的方法,其特征在于,所述步骤d中在进行签名之前还包括:执行验PIN码操作;
所述步骤h中在进行签名之前还包括:判断是否验证过PIN码,是则继续,否则执行验PIN码操作,继续。
11.如权利要求10所述的方法,其特征在于,所述执行验PIN码操作,具体包括:判断接收到的用户输入的PIN码是否与内部存储的PIN码一致,是则继续,否则给上位机返回错误信息,结束。
12.一种确定智能密钥设备生命周期的实现方法,其特征在于,包括:
步骤P1:智能密钥设备上电,进行初始化;
步骤P2:等待接收上位机下发的指令;
步骤P3:当接收到指令时,判断接收到的指令的类型,如为哈希指令则执行步骤P7,如为签名指令则执行步骤P4,如为其他指令则根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤P2;
步骤P4:判断签名标识的值,如为第一预设值则执行步骤P5;如为第二预设值则执行步骤P6,如为其他值则返回错误信息,返回步骤P2;
步骤P5:判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果并将其返回给上位机,将签名标识的值清零,返回步骤P2;否则给上位机返回错误信息,返回步骤P2;
步骤P6:判断计数器的值是否达到预设值,是则给上位机返回错误信息,返回步骤P2,否则判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的外部摘要值进行签名得到签名结果并将其返回给上位机,更新计数器的值,将签名标识的值清零,返回步骤P2;否则给上位机返回错误信息,返回步骤P2;
步骤P7:根据接收到的指令判断哈希指令的类型,如为内部哈希指令则执行步骤P8,如为外部哈希指令则执行步骤P10;
步骤P8:判断签名标识的值是否为第二预设值,是则给上位机返回错误信息,执行步骤P2,否则执行步骤P9;
步骤P9:判断哈希算法是否有效,是则从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,将签名标识的值设为第一预设值,给上位机返回成功信息,返回步骤P2,否则给上位机返回错误信息,返回步骤P2;
步骤P10:判断签名标识的值是否为第一预设值,是则给上位机返回错误信息,执行步骤P2,否则执行步骤P11;
步骤P11:从外部哈希指令中提取外部摘要值并保存,给上位机返回成功信息,将签名标识的值设为第二预设值,返回步骤P2。
13.如权利要求12所述的方法,所述步骤P9包括:
步骤e11:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e14,否则执行步骤e12;
步骤e12:判断哈希算法是否有效,是则执行步骤e13,否则给上位机返回错误信息,返回步骤P2;
步骤e13:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,给上位机返回成功信息,返回步骤P2;
步骤e14:判断哈希算法是否有效,是则执行步骤e15,否则给上位机返回错误信息,返回步骤P2;
步骤e15:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,将签名标识的值设为第一预设值,给上位机返回成功信息,返回步骤P2。
14.如权利要求12所述的方法,其特征在于,所述步骤P9包括:
步骤e21:判断接收到的内部哈希指令是否为最后一包数据,是则执行步骤e26,否则执行步骤e22;
步骤e22:判断哈希算法是否有效,是则执行步骤e23,否则给上位机返回错误信息,返回步骤P2;
步骤e23:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
步骤e24:判断是否处理完所有的分包得到的完整的数据包,是则给上位机返回成功信息,返回步骤P2,否则执行步骤e25;
步骤e25:将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e24;
步骤e26:判断哈希算法是否有效,是则执行步骤e27,否则给上位机返回错误信息,返回步骤P2;
步骤e27:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
步骤e28:判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,给上位机返回成功信息,将签名标识的值设为第一预设值,返回步骤P2,否则执行步骤e29;
步骤e29:将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值,返回步骤e28。
15.如权利要求13或14所述的方法,其特征在于,所述判断接收到的指令是否为最后一包数据具体为:判断指令中第一字节上的数据是否为预设值,是则为最后一包数据,否则不是最后一包数据。
16.如权利要求13或14所述的方法,其特征在于,
所述判断哈希算法是否有效,具体为:判断哈希算法标志是否置位,是则哈希算法有效,否则哈希算法无效;
所述判断签名算法是否有效,具体为:判断签名算法标识是否置位,是则签名算法有效,否则签名算法无效;
所述判断用户私钥是否有效,具体为:判断是否定位了有效用户私钥,是则用户私钥有效,否则用户私钥无效。
17.如权利要求12所述的方法,其特征在于,
所述步骤P8和P9之间还包括:判断签名标识的值是否为第一预设值,是则给上位机返回错误信息,执行步骤P2,否则执行步骤P9;
所述步骤P10和P11之间还包括:判断签名标识的值是否为第二预设值,是则给上位机返回错误信息,执行步骤P2,否则执行步骤P11。
18.如权利要求12所述的方法,其特征在于,所述步骤P3中根据接收到的指令进行操作并将操作结果返回给上位机,返回步骤P2,包括:如接收到的指令为设置算法指令,则执行步骤s1-步骤s6;
步骤s1:从所述设置算法指令中获取参数,并判断参数是否正确,是则执行步骤s2,否则给上位机返回错误信息,将签名标识的值清零,执行步骤P2;
步骤s2:根据设置算法指令判断是否支持哈希算法和签名算法,是则执行步骤s3,否则给上位机返回错误信息,将签名标识的值清零,执行步骤p2;
步骤s3:设置有效哈希算法和有效签名算法;
步骤s4:根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,给上位机返回成功响应,将签名标识的值清零,返回步骤P2。
19.如权利要求18所述的方法,其特征在于,所述判断参数是否正确具体为:判断所述设置算法指令中的第一预设位置上的数据是否为第一预设数据串,是则参数正确,否则参数不正确。
20.如权利要求18所述的方法,其特征在于,所述步骤s2具体为:判断接收到的设置算法指令的数据域中的第一预设位置上的数据和第二预设位置上的数据是否分别为第一预设字符和第二预设数据串,是则支持,否则不支持;
所述步骤s3具体为:将哈希算法标志和签名算法标志置位。
21.如权利要求18所述的方法,其特征在于,所述密钥ID和用途信息为预先通过一条指令来获取得到或从设置算法指令的数据域中获取得到。
22.如权利要求12所述的方法,其特征在于,
所述步骤P5中在进行签名之前还包括:执行验PIN码操作;
所述步骤P6中在进行签名之前还包括:判断是否验证过PIN码,是则继续,否则执行验PIN码操作,继续。
23.如权利要求22所述的方法,其特征在于,所述执行验PIN码操作,具体包括:判断接收到的用户输入的PIN码是否与内部存储的PIN码一致,是则继续,否则给上位机返回错误信息,结束。
24.一种确定智能密钥设备生命周期的实现装置,其特征在于,包括:
初始化模块:用于进行初始化;
接收模块:用于接收上位机下发的指令;
第一判断模块,用于判断接收到的指令的类型,如为哈希指令则第二判断模块工作,如为签名指令则判断签名模块工作;
判断签名模块,用于判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果,否则通知发送模块给上位机返回错误信息;
第二判断模块,用于根据所述接收模块接收到的指令判断哈希指令的类型,如为内部哈希指令则第三判断模块工作,如外部哈希指令则第四判断模块工作;
第三判断模块,用于判断哈希算法是否有效,是则计算存储模块工作,否则,否则通知发送模块给上位机返回错误信息;
计算存储模块,用于从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,通知发送模块给上位机返回成功信息;
第四判断模块,用于判断计数器的值是否达到预设值,是则通知发送模块给上位机返回错误信息,否则第五判断模块工作;
第五判断模块,用于判断签名算法和用户私钥是否有效,是则签名更新模块工作,否则通知发送模块给上位机返回错误信息;
签名更新模块,用于从外部哈希指令中提取外部摘要值,根据有效签名算法使用有效用户私钥对外部摘要值进行签名得到签名结果,更新计数器的值;
发送模块,用于将签名结果、成功信息和错误信息返回给上位机。
25.如权利要求24所述的装置,所述计算存储模块包括:
第一判断单元,用于判断接收到的内部哈希指令是否为最后一包数据,是第二判断单元工作,否则第三判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取存储单元工作,否则通知发送模块给上位机返回错误信息;
提取存储单元:根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,通知发送模块给上位机返回成功信息;
第三判断单元,用于判断哈希算法是否有效,是则提取计算单元工作,否则通知发送模块给上位机返回错误信息;
提取计算单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存,通知发送模块给上位机返回成功信息。
26.如权利要求24所述的装置,其特征在于,所述计算存储模块包括:
第一判断单元,用于判断接收到的内部哈希指令是否为最后一包数据,是则第四判断单元工作,否则第二判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取分包单元工作,否则通知发送模块给上位机返回错误信息;
提取分包单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
第三判断单元,用于判断是否处理完所有的分包得到的完整的数据包,是则通知发送模块给上位机返回成功信息;否则第一计算更新单元工作;
第一计算更新单元,用于将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值;
第四判断单元,用于判断哈希算法是否有效,是则提取分包更新单元工作,否则通知发送模块给上位机返回错误信息;
提取分包更新单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
第五判断单元,用于判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,通知发送模块给上位机返回成功信息;否则第二计算更新单元工作;
第二计算更新单元,用于将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值。
27.如权利要求24所述的装置,其特征在于,还包括:
获取判断模块,用于从所述接收模块接收到的设置算法指令中获取参数,并判断参数是否正确,是则第六判断模块工作,否则通知发送模块给上位机返回错误信息;
第六判断模块,用于根据设置算法指令判断是否支持哈希算法和签名算法,是则设置模块工作,否则通知发送模块给上位机返回错误信息;
设置模块,用于设置有效哈希算法和有效签名算法;
定位模块,用于根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,通知发送模块给上位机返回成功信息。
28.如权利要求24所述的装置,其特征在于,还包括:
验PIN码模块:用于执行验PIN码操作;
第七判断模块,用于判断是否验证过PIN码。
29.一种确定智能密钥设备生命周期的实现装置,其特征在于,包括:
初始化模块,用于进行初始化;
接收模块,用于接收上位机下发的指令;
第一判断模块,用于判断接收到的指令的类型;如为哈希指令则第三判断模块工作,如为签名指令则第二判断模块工作;
第二判断模块,用于判断签名标识的值,如为第一预设值则第一判断签名模块工作,如为第二预设值则第二判断签名模块工作;
第一判断签名模块,用于判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的内部摘要值进行签名得到签名结果,将签名标识的值清零,否则通知发送模块给上位机返回错误信息;
第二判断签名模块,用于判断计数器的值是否达到预设值;还用于当预设值未达到预设值时判断判断签名算法和用户私钥是否有效,是则根据有效签名算法使用有效用户私钥对保存的外部摘要值进行签名得到签名结果,更新计数器的值,将签名标识的值清零,当计数器的值达到预设值时或签名算法和用户私钥无效时通知发送模块给上位机返回错误信息;
第三判断模块,用于根据接收到的指令判断哈希指令的类型,如为内部哈希指令则第四判断模块工作,如为外部哈希指令则第五判断模块工作;
第四判断模块,用于判断签名标识的值是否为第二预设值,是则通知发送模块给上位机返回错误信息,否则判断计算模块工作;
判断计算模块,用于判断哈希算法是否有效,是则从内部哈希指令中提取待签名数据,根据有效哈希算法对所述待签名数据进行计算得到内部摘要值并保存,将签名标识的值设为第一预设值,通知发送模块给上位机返回成功信息,否则通知发送模块给上位机返回错误信息;
第五判断模块,用于判断签名标识的值是否为第一预设值,是则通知发送模块给上位机返回错误信息,否则提取保存模块工作;
提取保存模块,用于从外部哈希指令中提取外部摘要值并保存,通知发送模块给上位机返回成功信息,将签名标识的值设为第二预设值;
发送模块,用于将签名结果、成功信息和错误信息返回给上位机。
30.如权利要求29所述的装置,所述判断计算模块包括:
第一判断单元,用于判断接收到的内部哈希指令是否为最后一包数据,是第二判断单元工作,否则第三判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取存储单元工作,否则通知发送模块给上位机返回错误信息;
提取存储单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,通知发送模块给上位机返回成功信息;
第三判断单元,用于判断哈希算法是否有效,是则提取计算单元工作,否则通知发送模块给上位机返回错误信息;
提取计算单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据并顺序存储到缓存区中,根据有效哈希算法对所述缓存区中的待签名数据进行计算得到内部摘要值并保存;
设置单元,用于将签名标识的值设为第一预设值,通知发送模块给上位机返回成功信息。
31.如权利要求29所述的装置,其特征在于,所述判断计算模块包括:
第一判断单元,判断接收到的内部哈希指令是否为最后一包数据,是则第四判断单元工作,否则第二判断单元工作;
第二判断单元,用于判断哈希算法是否有效,是则提取分包单元工作,否则通知发送模块给上位机返回错误信息;
提取分包单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,根据有效哈希算法对分包得到的第一个数据包进行哈希得到中间摘要值,保存中间摘要值和分包得到的非完整的数据包;
第三判断单元,判断是否处理完所有的分包得到的完整的数据包,是则通知发送模块给上位机返回成功信息,否则第一计算更新单元工作;
第一计算更新单元,用于将分包得到的下一个完整的数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值;
第四判断单元,用于判断哈希算法是否有效,是则提取分包更新单元工作,否则通知发送模块给上位机返回错误信息;
提取分包更新单元,用于根据内部哈希指令中的预设字节上的待签名数据长度从内部哈希指令中提取待签名数据,对保存的非完整的数据包和待签名数据进行分包,对保存的中间摘要值和分包得到的第一包数据进行并用计算结果更新中间摘要值;
第五判断单元,用于判断是否处理完所有的分包得到的数据包,是则将保存中的中间摘要值作为内部摘要值,将签名标识的值设为第一预设值,通知发送模块给上位机返回成功信息;否则第二计算更新单元工作;
第二计算更新单元,用于将分包得到的下一个数据包作为当前数据包,根据有效哈希算法对中间摘要值和当前数据包进行计算并用计算结果更新中间摘要值。
32.如权利要求29所述的装置,其特征在于,还包括:
第六判断模块,用于判断签名标识的值是否为第一预设值,是则通知发送模块给上位机返回错误信息,否则判断计算模块工作;
第七判断模块,用于判断签名标识的值是否为第二预设值,是则通知发送模块给上位机返回错误信息,否则提取保存模块工作。
33.如权利要求29所述的装置,其特征在于,还包括:
获取判断模块,用于从所述接收模块接收到的设置算法指令中获取参数,并判断参数是否正确,是则第八判断模块工作,否则通知发送模块给上位机返回错误信息;
第八判断模块,用于根据设置算法指令判断是否支持哈希算法和签名算法,是则设置模块工作,否则通知发送模块给上位机返回错误信息;
设置模块,用于设置有效哈希算法和有效签名算法;
定位模块,用于根据密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,通知发送模块给上位机返回成功信息。
34.如权利要求29所述的装置,其特征在于,还包括:
验PIN码模块:用于执行验PIN码操作;
第八判断模块,用于判断是否验证过PIN码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310405532.9A CN103490894B (zh) | 2013-09-09 | 2013-09-09 | 一种确定智能密钥设备生命周期的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310405532.9A CN103490894B (zh) | 2013-09-09 | 2013-09-09 | 一种确定智能密钥设备生命周期的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103490894A CN103490894A (zh) | 2014-01-01 |
CN103490894B true CN103490894B (zh) | 2016-08-10 |
Family
ID=49830868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310405532.9A Expired - Fee Related CN103490894B (zh) | 2013-09-09 | 2013-09-09 | 一种确定智能密钥设备生命周期的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103490894B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104992329B (zh) * | 2015-05-14 | 2018-05-11 | 飞天诚信科技股份有限公司 | 一种安全下发交易报文的方法 |
CN105046137B (zh) * | 2015-07-03 | 2018-06-01 | 飞天诚信科技股份有限公司 | 一种智能密钥设备防范远程挟持的实现方法及装置 |
CN105407001B (zh) * | 2015-11-27 | 2018-10-12 | 飞天诚信科技股份有限公司 | 一种快速识别通讯参数配置的方法、系统及装置 |
CN107066573B (zh) * | 2017-04-10 | 2020-04-17 | 北京工商大学 | 一种基于三维表结构的数据关联存取方法及应用 |
CN107370733A (zh) * | 2017-07-18 | 2017-11-21 | 电子科技大学 | 一种基于Rijndael和ECC混合加密的智能锁管理方法 |
CN107645382A (zh) * | 2017-10-10 | 2018-01-30 | 飞天诚信科技股份有限公司 | 一种身份标识设备及其工作方法 |
CN112887080B (zh) * | 2020-09-04 | 2022-08-05 | 深圳奥联信息安全技术有限公司 | 基于sm2的密钥生成方法及系统 |
CN111818106B (zh) * | 2020-09-14 | 2020-12-11 | 飞天诚信科技股份有限公司 | 一种数据传输的方法及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101184096A (zh) * | 2007-12-07 | 2008-05-21 | 北京飞天诚信科技有限公司 | 一种提高智能密钥装置安全性的系统及方法 |
CN101729244A (zh) * | 2008-10-24 | 2010-06-09 | 中兴通讯股份有限公司 | 密钥分发方法和系统 |
CN101729493A (zh) * | 2008-10-28 | 2010-06-09 | 中兴通讯股份有限公司 | 密钥分发方法和系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8015393B2 (en) * | 2004-04-12 | 2011-09-06 | Canon Kabushiki Kaisha | Data processing device, encryption communication method, key generation method, and computer program |
CN101281563A (zh) * | 2007-04-04 | 2008-10-08 | 李代甫 | 一种带使用计数器的数字签名装置 |
CN101763477B (zh) * | 2009-12-30 | 2011-12-28 | 北京飞天诚信科技有限公司 | 一种智能密钥装置的签名方法 |
CN102571357B (zh) * | 2012-02-24 | 2014-03-26 | 飞天诚信科技股份有限公司 | 一种签名的实现方法和装置 |
CN102970145B (zh) * | 2012-12-21 | 2015-01-14 | 飞天诚信科技股份有限公司 | 一种签名方法及装置 |
CN103268437B (zh) * | 2013-05-10 | 2016-02-24 | 飞天诚信科技股份有限公司 | 一种提高签名数据安全性的方法 |
-
2013
- 2013-09-09 CN CN201310405532.9A patent/CN103490894B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101184096A (zh) * | 2007-12-07 | 2008-05-21 | 北京飞天诚信科技有限公司 | 一种提高智能密钥装置安全性的系统及方法 |
CN101729244A (zh) * | 2008-10-24 | 2010-06-09 | 中兴通讯股份有限公司 | 密钥分发方法和系统 |
CN101729493A (zh) * | 2008-10-28 | 2010-06-09 | 中兴通讯股份有限公司 | 密钥分发方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103490894A (zh) | 2014-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103490894B (zh) | 一种确定智能密钥设备生命周期的实现方法及装置 | |
CN1989726B (zh) | 用于执行加密计算的方法和装置 | |
CN103905202B (zh) | 一种基于puf的rfid轻量级双向认证方法 | |
CN109286599A (zh) | 数据安全防护方法、智能设备、服务器及可读存储介质 | |
CN103701829B (zh) | 一种离线解析dpapi加密数据的方法 | |
CN109104724B (zh) | 一种用于设备升级的数据加密方法和装置 | |
CN102571357B (zh) | 一种签名的实现方法和装置 | |
CN110519063A (zh) | 一种基于区块链的医药处方有效配置的工作方法 | |
CN105228157B (zh) | 一种无线传感器网络安全轻量重编程方法 | |
CN107368744A (zh) | 用于更新固件组件的方法以及测量和控制技术的设备 | |
CN103853943B (zh) | 程序保护方法及装置 | |
CN110955896A (zh) | 一种通过近场通信实现单片机固件安全升级的方法 | |
EP3832980A1 (en) | Method for data transmission, battery management system, and storage medium | |
CN108762788A (zh) | 一种基于服务器的嵌入式设备固件加密方法和系统 | |
CN107423626A (zh) | 一种基于连续Hash值的BIOS更新信任链的方法 | |
CN109391936A (zh) | 一种ota升级包加密下载的方法 | |
CN111506931A (zh) | 一种基于区块链和云计算平台的电子证据管理方法 | |
CN113868672B (zh) | 模组无线固件升级方法、安全芯片和无线固件升级平台 | |
CN106648591A (zh) | 一种基于硬件加密的uefi bios系统安全升级方法 | |
CN115225339B (zh) | 一种输电物联网感知终端安全接入及数据传输方法和系统 | |
CN104484615B (zh) | 适用于可重构阵列架构的基于空间随机化抗故障攻击方法 | |
CN104298936B (zh) | 一种基于cpld芯片的fpga加密及参数配置系统 | |
CN104699046B (zh) | 一种用公网实现对光伏或风电站远程控制的方法及系统 | |
CN105281901A (zh) | 一种云租户关键信息的加密方法 | |
CN108199836A (zh) | 一种密钥与设备绑定、解绑定的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160810 |
|
CF01 | Termination of patent right due to non-payment of annual fee |