一种签名设备的签名方法
【专利摘要】本发明公开了一种签名设备的签名方法,属于信息安全【技术领域】。该方法是通过签名设备接收上位机下发的打开应用指令、打开容器指令、产生密钥对指令和签名指令完成整个签名过程的,其中,在收到打开容器指令和产生密钥对指令时所做操作将与主体关联的签名密钥放到指定容器中,在收到签名指令时所做签名操作使用所述与主体关联的签名密钥,从而达到强化了主体和签名密钥之间的关联,可以有效防止身份与授权的滥用,增强签名的安全性。
【专利说明】一种签名设备的签名方法
【技术领域】
[0001]本发明属于信息安全【技术领域】,尤其涉及一种签名设备的签名方法。
【背景技术】
[0002]目前,随着签名设备(如USBKey)的广泛使用,签名设备的签名方法的安全度必然引起更多的关注度。现有的签名设备的签名方法中,以基于SM2算法(椭圆曲线公钥密码算法)的签名方法的应用最为广泛,该签名方法中需要预处理产生一个和主体名及主体的SM2公钥相关联的签名预处理结果(通常称为Z值),在现实的一般的情况下,产生这个Z值的参量(通常称为UserID)通常是由USBKey外部输入相关的信息,然后根据参量UserID计算得到Z值。这样的话,一个用做签名的密钥就可以关联多个UserlD,也就是可以关联多个主体。
[0003]主体通常是用来标识信息系统中的一个实体,如一台主机,一个账户,一个人,一个角色等。它通常是由信息系统为这个实体分配的,并将这个主体与一个公钥绑定,形成证书,被用于信息系统的认证与授权管理。如果,用户在使用USBKey做产生密钥对和签名的操作时,任意指明信息系统中的UserlD,将可能导致身份与授权的滥用,进而导致签名方法的不安全。
【发明内容】
[0004]本发明提出的一种签名设备的签名方法,可以解决现有技术中签名应用存在的安全隐患问题。
[0005]本发明采取的技术方案如下:一种签名设备的签名方法,包括:设备上电、初始化的步骤;设备接收上位机下发的指令的步骤;设备判断接收到的指令的类型,根据所述指令的类型执行相应指令操作,并向上位机返回响应报文的步骤。
[0006]当设备判断所述指令的类型为打开应用指令时,根据所述打开应用指令中包含的应用名称打开设备上的与所述应用名称对应的应用,向上位机返回打开应用响应报文;
[0007]当设备判断所述指令的类型为打开容器指令时,根据所述打开容器指令中包含的应用标识确定当前应用,根据所述打开容器指令中包含的容器名称打开当前应用下的与所述容器名称对应的指定容器,向上位机返回打开容器响应报文;
[0008]当设备判断所述指令的类型为产生密钥对指令时,判断预设存储区中是否存储有签名预处理结果,是则先清除预设存储区中的所述签名预处理结果再执行生成密钥对的操作;否则直接执行生成密钥对的操作;所述生成密钥对的操作具体为:根据所述产生密钥对指令中包含的应用标识和容器标识确定当前应用下的指定容器,根据所述产生密钥对指令中包含的密钥信息在指定容器中创建公私钥文件结构,根据所述产生密钥对指令中包含的文件标识和记录号对所述公私钥文件结构中的预设信息进行填充得到生成的密钥对,向上位机返回产生密钥对响应报文;
[0009]当设备判断所述指令的类型为签名指令时,根据所述签名指令中包含的应用标识和容器标识确定当前应用下的指定容器,判断预设存储区中是否存储有签名预处理结果,是则直接获取所述签名预处理结果,否则根据指定容器中的密钥对的文件结构得到文件标识和记录号,根据得到的文件标识和记录号从与所述文件标识对应的记录文件中获取一条与所述记录号对应的记录数据,根据密钥对中的公钥和所述记录数据计算出一个签名预处理结果并存储到预设存储区;
[0010]根据所述签名预处理结果、指定容器中的密钥对中的私钥对所述签名指令中包含的待签名数据计算得到签名结果,向上位机返回签名响应报文。
[0011]所述方法还包括:当设备判断所述指令的类型为验PIN指令时,从所述验PIN指令中获取PIN标识、应用标识和PIN码,根据所述PIN标识确定登录者身份,根据所述应用标识确定当前应用,并验证所述PIN码是否正确,是则根据所述登录者身份设置当前登录状态,向上位机返回状态码为第一预设值的验PIN响应报文,否则向上位机返回状态码为其他值的验PIN响应报文。
[0012]所述方法还包括:当设备判断所述指令的类型为创建记录文件指令时,根据所述创建记录文件指令中包含的应用标识确定当前应用,根据所述创建记录文件指令中包含的记录文件信息在当前应用下创建一个记录文件,向上位机返回创建记录文件响应报文。
[0013]所述方法还包括:当设备判断所述指令的类型为写入记录指令时,根据所述写入记录指令中包含的应用标识确定当前应用,根据所述写入记录指令中包含的文件名在当前应用下找到一个记录文件,根据所述写入记录指令中包含的偏移量,将所述写入记录指令中包含的待写入记录数据写入到所述记录文件中的相应地址,向上位机返回写入记录响应报文。
[0014]优选的,当设备判断所述指令的类型为创建记录文件指令时,还包括确认当前登录状态为管理员登录状态的步骤。
[0015]优选的,当设备判断所述指令的类型为打开容器指令或产生密钥对指令或签名指令时,还包括确认当前登录状态为用户登录状态的步骤。
[0016]采用上述技术方案达到的有益效果:本发明提出的签名设备的签名方法强化了主体和签名密钥之间的关联,可以有效防止身份与授权的滥用,增强签名的安全性。
【专利附图】
【附图说明】
[0017]图1是本发明实施例2提供的一种签名设备的签名方法流程图。
【具体实施方式】
[0018]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0019]实施例1
[0020]本实施例提供了一种签名设备的签名方法,其中设备可以是USBKey设备,也可以是其他可做签名的设备,本实施例中提及的记录数据可以对照【背景技术】中提及的参量UserID来理解,本实施例中提及的签名预处理结果可以对照【背景技术】中提及的Z值来理解,该签名方法包括:
[0021 ] 步骤1:设备上电、初始化;
[0022]步骤2:设备接收上位机下发的指令;
[0023]步骤3:设备判断接收到的指令的类型,根据所述指令的类型执行相应指令操作,并向上位机返回响应报文;
[0024]本步骤具体包括:当设备判断所述指令的类型为打开应用指令时,根据所述打开应用指令中包含的应用名称打开设备上的与所述应用名称对应的应用,向上位机返回打开应用响应报文;
[0025]当设备判断所述指令的类型为打开容器指令时,根据所述打开容器指令中包含的应用标识确定当前应用,根据所述打开容器指令中包含的容器名称打开当前应用下的与所述容器名称对应的指定容器,向上位机返回打开容器响应报文;
[0026]当设备判断所述指令的类型为产生密钥对指令时,判断预设存储区中是否存储有签名预处理结果,是则先清除预设存储区中的所述签名预处理结果再执行生成密钥对的操作;否则直接执行生成密钥对的操作;所述生成密钥对的操作具体为:根据所述产生密钥对指令中包含的应用标识和容器标识确定当前应用下的指定容器,根据所述产生密钥对指令中包含的密钥信息在指定容器中创建公私钥文件结构,根据所述产生密钥对指令中包含的文件标识和记录号对所述公私钥文件结构中的预设信息进行填充得到生成的密钥对,向上位机返回产生密钥对响应报文;
[0027]当设备判断所述指令的类型为签名指令时,根据所述签名指令中包含的应用标识和容器标识确定当前应用下的指定容器,判断预设存储区中是否存储有签名预处理结果,是则直接获取所述签名预处理结果,否则根据指定容器中的密钥对的文件结构得到文件标识和记录号,根据得到的文件标识和记录号从与所述文件标识对应的记录文件中获取一条与所述记录号对应的记录数据,根据密钥对中的公钥和所述记录数据计算出一个签名预处理结果并存储到预设存储区;
[0028]根据所述签名预处理结果、指定容器中的密钥对中的私钥对所述签名指令中包含的待签名数据计算得到签名结果,向上位机返回签名响应报文。
[0029]本实施例提出的签名方法,在收到打开容器指令和产生密钥对指令时所做操作将与主体关联的签名密钥放到指定容器中,在收到签名指令时所做签名操作使用所述与主体关联的签名密钥,从而强化了主体和签名密钥之间的关联,可以有效防止身份与授权的滥用,增强签名的安全性。
[0030]实施例2
[0031]本实施例提供了一种签名设备的签名方法,其中设备可以是USBKey设备,也可以是其他可做签名的设备,本实施例中提及的记录数据可以对照【背景技术】中提及的参量UserID来理解,本实施例中提及的签名预处理结果可以对照【背景技术】中提及的Z值来理解。
[0032]本实施例提出的签名方法包含了记录数据管理过程和签名过程,如图1所示,其中步骤8-18为管理员对记录文件或记录数据进行管理时设备的内部处理流程,步骤19-30为用户使用设备做产生密钥对和签名操作时设备的内部处理流程,该方法包括:
[0033]步骤1:设备上电,初始化;[0034]步骤2:设备接收上位机下发的指令;
[0035]步骤3:设备判断接收到的指令的类型,若是打开应用指令则执行步骤4,若是验PIN指令则执行步骤6,若是创建记录文件指令则执行步骤10,若是写入记录指令则执行步骤13,若是打开容器指令则执行步骤15,若是产生密钥对指令则执行步骤18,若是签名指令则执行步骤21 ;
[0036]本实施例中具体的,根据接收到的指令的第I和第2个字节判断指令类型,当第I和第2个字节为0x80 26时则接收到的指令是打开应用指令,当第I和第2个字节为80 18时则接收到的指令是验PIN指令,当第I和第2个字节为0x80 30时则接收到的指令是创建记录文件指令,当第I和第2个字节为0x80 3A时则接收到的指令是写入记录指令,当第I和第2个字节为0x80 42时则接收到的指令是打开容器指令,当第I和第2个字节为0x8070时则接收到的指令是产生密钥对指令,当第I和第2个字节为0x80 74时则接收到的指令是签名指令。
[0037]步骤4:根据打开应用指令中包含的应用名称打开设备上的一个应用;
[0038]本步骤具体包括:
[0039]步骤4-1:根据打开应用指令的第5和第6个字节得到一个长度值,判断第6个字节之后的数据域数据的长度是否与该长度值相符,是则执行步骤4-2,否则生成包含状态码的打开应用响应报文并执行步骤5 ;
[0040]优选的,本步骤生成的打开应用响应报文中包含的状态码取值为第二预设值,例如第二预设值为0x6700。
[0041]步骤4-2:根据所述数据域数据得到应用名称,打开设备上与该应用名称对应的应用;
[0042]进一步的,当设备上不存在与该应用名称对应的应用时,生成包含状态码的打开应用响应报文,且该状态码取值为第三预设值,例如第三预设值为0x6A8B。或者找到的设备上已有打开的应用且设备不支持同时打开多个应用则生成包含状态码的打开应用响应报文,且该状态码取值为第四预设值,例如第四预设值为0x6A90。
[0043]例如:接收到的打开应用指令为80 26 00 00 00000C Applicationl,则打开的应用为 Applicationl ο
[0044]步骤5:向上位机返回打开应用响应报文,然后返回步骤2。
[0045]具体的,当步骤4正确执行时本步骤返回包含状态码和响应数据的打开应用响应报文,且包含的状态码SW1SW2取值为第一预设值,例如第一预设值为0x9000 ;包含的响应数据具体为应用的属性信息,如应用下创建文件和容器的权限、应用可支持的最大容器数量、应用可支持的最大证书数量、应用可支持的最大文件数量和应用ID等属性信息;当步骤4在执行过程中出现错误时本步骤返回包含状态码的打开应用指令响应报文,且包含的状态码SW1SW2取值为其他值。例如,其他值包括0x6700、0x6A8B、0x6A90等。
[0046]步骤6:从验PIN指令中获取PINID、应用ID和PIN码;
[0047]本步骤具体包括:
[0048]步骤6-1:根据验PIN指令的第4个字节得到PINID,根据第5-7个字节得到一个长度值,判断第7个字节之后的数据域数据的长度是否与该长度值相符,是则执行步骤6-2,否则生成包含状态码的验PIN响应报文并执行步骤9 ;[0049]优选的,本步骤生成的验PIN响应报文中包含的状态码取值为第二预设值,例如第二预设值为0x6700。
[0050]步骤6-2:根据第一预设结构从所述数据域数据中得到应用ID和PIN码。
[0051]具体的,所述第一预设结构为:应用ID (2个字节)+PIN码(16个字节)。
[0052]步骤7:根据PINID确定登录者身份,根据应用ID确定当前应用,并验证PIN码是否正确,是则执行步骤8,否则执行步骤9 ;
[0053]优选的,当PINID取值为0x00时则登录者身份为管理员,当PINID取值为0x01时则登录者身份为用户。
[0054]进一步的,当根据应用ID确定的当前应用是未打开的应用时则生成包含状态码的验PIN响应报文并执行步骤9 ;优选的,该状态码取值为第五预设值,例如第五预设值为0x698Ao
[0055]步骤8:根据登录者身份设置当前登录状态;
[0056]具体的,当登录者身份为管理员时设置当前登录状态为管理员登录状态,当登录者身份为用户时设置当前登录状态为用户登录状态。
[0057]例如,接收到的验证PIN 指令是 80 18 00 00 000012 0100 31 32 33 34 35 3637 38 31 32 33 34 35 36 37 38,则根据该指令确定登录者身份为管理员,从指令中获取的应用 ID 为 0x0100,PIN 码为 31 32 33 34 35 36 37 38 31 32 33 34 35 36 37 38,当验证PIN码正确时设置当前登录状态为管理员登录。
[0058]步骤9:向上位机返回验PIN响应报文,然后返回步骤2。
[0059]具体的,当步骤6-步骤8正确执行时本步骤返回包含状态码的验PIN响应报文,且包含的状态码SW1SW2取值为第一预设值,例如第一预设值为0x9000 ;当步骤6-步骤8在执行过程中出现错误时本步骤返回的验PIN响应报文中包含的状态码SW1SW2取值为其他值。例如,其他值包括0x6700、0x698A等。
[0060]步骤10:判断当前登录状态是否为管理员登录状态,是则执行步骤11,否则返回不支持的状态码,返回步骤2;
[0061]步骤11:根据创建记录文件指令中包含的应用ID确定当前应用,根据创建记录文件指令中包含的记录文件信息在当前应用下创建一个记录文件;
[0062]本步骤具体包括:
[0063]步骤11-1:根据所述创建记录文件指令的第3和第4个字节得到应用ID,根据该应用ID确定当前应用;
[0064]进一步的,若根据应用ID在设备上找不到应用,则生成包含状态码的创建记录文件响应报文,优选的,所述状态码SW1SW2的取值为第六预设值,例如第六预设值为0x6A88。
[0065]步骤11-2:根据所述创建记录文件指令的第5至第7个字节得到一个长度值,判断第7个字节后的数据域数据的长度是否与该长度值相符,是则执行下一步,否则生成包含状态码的创建记录文件响应报文;
[0066]优选的,本步骤中SW1SW2的取值为第二预设值,例如第二预设值为0x6700。
[0067]步骤11-3:按照第二预设结构从所述数据域数据中得到要创建的记录文件信息;
[0068]所述记录文件信息包括:文件名、文件大小、读权限标识和写权限标识。所述第二预设结构为:文件名(32个字节)+文件大小(4个字节)+读权限标识(4个字节)+写权限标识(4个字节)。优选的,文件名不足32个字节用O补位;读权限标识为10000000表示可读,写权限标识为10000000标识可写。
[0069]步骤11-4:根据记录文件信息在当前应用下创建记录文件。
[0070]进一步的,本步骤还可以包括根据记录文件信息中的文件名判断当前应用下是否已存在同名文件,是则生成包含状态码的创建记录文件响应报文,否则在当前应用下创建记录文件;优选的,本步骤中SW1SW2的取值为第七预设值,例如第七预设值为0x6A92。
[0071]例如:接收到的创建记录文件指令为:80 30 1001 00002C useridrecordfilel000000000000000000000000000000 00010000 10000000 10000000 ;则根据该指令创建的记录文件为useridrecordfilel,且该记录文件是一个可读、可写文件。
[0072]步骤12:向上位机返回创建记录文件响应报文,然后返回步骤2。
[0073]具体的,当步骤11正确执行时本步骤返回的创建记录文件响应报文中包含的状态码SW1SW2取值为第一预设值,例如第一预设值为0x9000,创建记录文件响应报文的数据域中还包含文件名和文件ID ;当步骤11执行过程中出错时本步骤返回的创建记录文件响应报文中包含的状态码SW1SW2取为其他值,例如:其他值包括0x6700、0x6A88、0x6A92等。
[0074]步骤13:根据写入记录指令中包含的应用ID确定当前应用,根据写入记录指令中包含的文件名在当前应用下找到一个记录文件,根据写入指令中包含的偏移量,将写入记录指令中包含的待写入记录数据写入到该记录文件中的相应地址;
[0075]本步骤具体包括:
[0076]步骤13-1:根据所述写入记录指令的第5和第6个字节得到应用ID,根据该应用ID确定当前应用;
[0077]步骤13-2:根据所述写入记录指令的第7和第8个字节得到一个长度值,判断第8个字节后的数据域数据的长度是否与该长度值相符,是则执行下一步,否则生成包含状态码的写入记录响应报文;
[0078]优选的,本步骤中SW1SW2的取值为第二预设值,例如第二预设值为0x6700。
[0079]步骤13-3:按照第三预设结构从所述数据域数据中得到偏移量、文件名和待写入记录数据;
[0080]具体的,所述第三预设结构为:偏移量(2个字节)+文件名长度(2个字节)+文件名+待写入记录数据的长度(2个字节)+待写入记录数据。
[0081]进一步的,本步骤还可以包括根据第三预设结构中的文件名长度和待写入记录数据的长度对第三预设结构中包含的文件名和待写入记录数据各自的长度进行验证的过程。当出现长度错误的情况时,生成包含状态码的写入记录响应报文;优选的,本步骤中SW1SW2的取值为第二预设值,例如第二预设值为0x6700。
[0082]步骤13-4:根据文件名在当前应用下找到一个记录文件,根据偏移量在记录文件中确定一个写入地址,将所述待写入记录数据写入该写入地址。
[0083]具体的,根据该写入地址可以确定记录数据的记录号。例如,写入地址为0000,对应的记录号为I。
[0084]进一步的,本步骤还可以包括:
[0085]第一步:根据文件名判断当前应用下是否存在与该文件名对应的记录文件,是则执行第二步,否则生成包含状态码的写入记录响应报文;优选的,本步骤中SW1SW2的取值为第八预设值,例如第八预设值为0x6A93。
[0086]第二步:判断偏移量是否超出所述记录文件的大小,是则生成包含状态码的写入记录响应报文,否则在记录文件中确定一个指定地址,将所述待写入记录数据写入该指定地址。优选的,本步骤中SW1SW2的取值为第九预设值,例如第九预设值为0x6B00。
[0087]例如:收到的写入记录指令为80 3A 00 00 000029 0100 0000 1100useridrecordfilel 1000 1234567812345678,则将记录数据 1234567812345678 写入记录文件useridrecordf ilel中偏移地址为0000的位置。
[0088]步骤14:向上位机返回写入记录响应报文,然后返回步骤2。
[0089]例如:当步骤13正确执行时本步骤返回的写入记录响应报文中包含的状态码SW1SW2取值为第一预设值,例如第一预设值为0x9000,写入记录响应报文的数据域中还包含记录号;当步骤13执行过程中出错时本步骤返回的写入记录响应报文中包含的状态码SW1SW2取为其他值,例如:其他值包括0x6700、0x6A93、0x6B00等。
[0090]步骤15:判断当前登录状态是否为用户登录状态,是则执行步骤16,否则返回不支持的状态码,返回步骤2;
[0091]步骤16:根据打开容器指令中包含的应用ID确定当前应用,根据打开容器指令中包含的容器名称打开当前应用下的指定容器;
[0092]本步骤具体包括:
[0093]步骤16-1:根据打开容器指令的第5至第7个字节得到一个长度值,判断第7个字节之后的数据域数据的长度是否与该长度值相符,是则执行下一步,否则生成包含状态码的打开容器响应报文,执行步骤17 ;
[0094]优选的,本步骤所述状态码SW1SW2的取值为第二预设值,例如第二预设值为6700。
[0095]步骤16-2:按照第四预设结构从所述数据域数据中得到应用ID和容器名称;
[0096]具体的,所述第四预设结构为:应用ID+容器名称;
[0097]步骤16-3:根据应用ID确定当前应用,根据容器名称在当前应用下找到指定容器,打开指定容器;
[0098]进一步的,若根据应用ID在设备上找不到应用,则生成包含状态码的打开容器响应报文,优选的,所述状态码SW1SW2的取值为第六预设值,例如第六预设值为0x6A88。若根据容器名称在当前应用下找不到指定容器,则生成包含状态码的打开容器响应报文,优选的,所述状态码SW1SW2的取值为第十预设值,例如第十预设值为0x6A91。
[0099]本实施例中提到的容器是一个用于存放非对称密钥对和会话密钥的逻辑对象。
[0100]例如:接收到的打开容器指令为80 42 00 00 00000C 0100 Containerl 0002,则打开应用ID为0100下的指定容器Containerl。
[0101]步骤17:向上位机返回打开容器响应报文,然后返回步骤2。
[0102]具体的,当步骤16正确执行时本步骤返回包含状态码和响应数据的打开容器响应报文,且包含的状态码SW1SW2取值为第一预设值,包含的响应数据具体为容器ID ;当步骤16在执行过程中出现错误时本步骤返回包含状态码的打开容器响应报文,且包含的状态码SW1SW2取为其他值。例如,其他值为0x6700、0x6A88和0x6A91。
[0103]步骤18:判断当前登录状态是否为用户登录状态,是则执行步骤19,否则返回不支持的状态码,返回步骤2;
[0104]步骤19:根据产生密钥对指令中包含的应用ID和容器ID确定当前应用下的指定容器,根据产生密钥对指令中包含的密钥信息在指定容器中创建公私钥文件结构,根据产生密钥对指令中包含的文件ID和记录号对所述公私钥文件结构中的预设信息进行填充得到生成的密钥对;
[0105]本步骤的具体包括:
[0106]步骤19-1:根据产生密钥对指令的第5至第7个字节得到一个长度值,判断第7个字节之后的数据域数据的长度是否与该长度值相符,是则执行下一步,否则生成包含状态码的打开容器响应报文;
[0107]优选的,本步骤所述长度值为预设长度,例如预设长度的取值为8,所述状态码SW1SW2的取值为第二预设值,例如第二预设值为0x6700。
[0108]步骤19-2:按照第五预设结构从所述数据域数据中得到应用ID、容器ID、密钥信息、文件ID和记录号;
[0109]具体的,所述第五预设结构为:应用ID (2个字节)+容器ID (2个字节)+密钥信息(4个字节)+文件I D (2个字节)+记录号(2个字节);所述密钥信息包括生成密钥对的位长。
[0110]步骤19-3:根据应用ID和容器ID确定当前应用下的指定容器,根据产生密钥对指令中包含的密钥信息在指定容器中创建公私钥文件结构;
[0111]进一步的,若根据应用ID在设备上找不到应用,则生成包含状态码的产生密钥对响应报文,优选的,所述状态码SW1SW2的取值为第六预设值,例如第六预设值为0x6A88。若根据容器ID在当前应用下找不到指定容器,则生成包含状态码的产生密钥对响应报文,优选的,所述状态码SW1SW2的取值为第十一预设值,例如第十一预设值为0x6A94。
[0112]具体的,所述公私钥文件结构如下:
[0113]
【权利要求】
1.一种签名设备的签名方法,其特征在于,包括: 设备上电、初始化的步骤; 设备接收上位机下发的指令的步骤; 设备判断接收到的指令的类型,根据所述指令的类型执行相应指令操作,并向上位机返回响应报文的步骤; 当设备判断所述指令的类型为打开应用指令时,根据所述打开应用指令中包含的应用名称打开设备上的与所述应用名称对应的应用,向上位机返回包含应用标识的打开应用响应报文; 当设备判断所述指令的类型为打开容器指令时,根据所述打开容器指令中包含的应用标识确定当前应用,根据所述打开容器指令中包含的容器名称打开当前应用下的与所述容器名称对应的指定容器,向上位机返回包含容器标识的打开容器响应报文; 当设备判断所述指令的类型为产生密钥对指令时,判断预设存储区中是否存储有签名预处理结果,是则先清除预设存储区中的所述签名预处理结果再执行生成密钥对的操作;否则直接执行生成密钥对的操作;所述生成密钥对的操作具体为:根据所述产生密钥对指令中包含的应 用标识和容器标识确定当前应用下的指定容器,根据所述产生密钥对指令中包含的密钥信息在指定容器中创建公私钥文件结构,根据所述产生密钥对指令中包含的文件标识和记录号对所述公私钥文件结构中的预设信息进行填充得到生成的密钥对,向上位机返回产生密钥对响应报文; 当设备判断所述指令的类型为签名指令时,根据所述签名指令中包含的应用标识和容器标识确定当前应用下的指定容器,判断预设存储区中是否存储有签名预处理结果,是则直接获取所述签名预处理结果,否则根据指定容器中的密钥对的文件结构得到文件标识和记录号,根据得到的文件标识和记录号从与所述文件标识对应的记录文件中获取一条与所述记录号对应的记录数据,根据密钥对中的公钥和所述记录数据计算出一个签名预处理结果并存储到预设存储区; 根据所述签名预处理结果、指定容器中的密钥对中的私钥对所述签名指令中包含的待签名数据计算得到签名结果,向上位机返回签名响应报文。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当设备判断所述指令的类型为验PIN指令时,从所述验PIN指令中获取PIN标识、应用标识和PIN码,根据所述PIN标识确定登录者身份,根据所述应用标识确定当前应用,并验证所述PIN码是否正确,是则根据所述登录者身份设置当前登录状态,向上位机返回状态码为第一预设值的验PIN响应报文,否则向上位机返回状态码为其他值的验PIN响应报文。
3.根据权利要求2所述的方法,其特征在于,所述从所述验PIN指令中获取PIN标识、应用标识和PIN码,具体为: al:根据所述验PIN指令的第4个字节得到PIN标识,根据第5至第7个字节得到一个长度值,判断第7个字节之后的数据域数据的长度是否与该长度值相符,是则执行a2,否则生成状态码为第二预设值的验PIN响应报文; a2:按照第一预设结构从所述数据域数据中得到应用标识和PIN码。
4.根据权利要求3所述的方法,其特征在于,所述第一预设结构为:2个字节的应用标识+16个字节的PIN码。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:当设备判断所述指令的类型为创建记录文件指令时,根据所述创建记录文件指令中包含的应用标识确定当前应用,根据所述创建记录文件指令中包含的记录文件信息在当前应用下创建一个记录文件,向上位机返回创建记录文件响应报文。
6.根据权利要求5所述的方法,其特征在于,所述根据所述创建记录文件指令中包含的应用标识确定当前应用,根据所述创建记录文件指令中包含的记录文件信息在当前应用下创建一个记录文件,具体为: bl:根据所述创建记录文件指令的第3和第4个字节得到应用标识,根据所述应用标识确定当前应用; b2:根据所述创建记录文件指令的第5至第7个字节得到一个长度值,判断第7个字节后的数据域数据的长度是否与该长度值相符,是则执行b3,否则生成状态码为第二预设值的创建记录文件响应报文; b3:按照第二预设结构从所述数据域数据中得到要创建的记录文件信息; b4:根据所述记录文件信息在当前应用下创建记录文件。
7.根据权利要求6所述的方法,其特征在于,所述第二预设结构为:32个字节的文件名+4个字节的文件大小+4个字节的读权限标识+4个字节的写权限标识。
8.根据权利要求5所述的方法,其特征在于,当设备判断所述指令的类型为创建记录文件指令时,还包括确认当前登录状态为管理员登录状态的步骤。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:当设备判断所述指令的类型为写入记录指令时,根据所述写入记录指令中包含的应用标识确定当前应用,根据所述写入记录指令中包含的文件名在当前应用下找到一个记录文件,根据所述写入记录指令中包含的偏移量,将所述写入记录指令中包含的待写入记录数据写入到所述记录文件中的相应地址,向上位机返回写入记录响应报文。
10.根据权利要求9所述的方法,其特征在于,所述根据所述写入记录指令中包含的应用标识确定当前应用,根据所述写入记录指令中包含的文件名在当前应用下找到一个记录文件,根据所述写入记录指令中包含的偏移量,将所述写入记录指令中包含的待写入记录数据写入到所述记录文件中的相应地址,具体为: Cl:根据所述写入记录指令的第5和第6个字节得到应用标识,根据所述应用标识确定当前应用; c2:根据所述写入记录指令的第7和第8个字节得到一个长度值,判断第8个字节后的数据域数据的长度是否与该长度值相符,是则执行c3,否则生成状态码为第二预设值的的写入记录响应报文; c3:按照第三预设结构从所述数据域数据中得到偏移量、文件名和待写入记录数据; c4:根据所述文件名在当前应用下找到一个记录文件,根据所述偏移量在所述记录文件中确定一个写入地址,将所述待写入记录数据写入所述写入地址。
11.根据权利要求10所述的方法,其特征在于,所述第三预设结构为:2个字节的偏移量+2个字节的文件名长度+文件名+2个字节的待写入记录数据的长度+待写入记录数据。
12.根据权利要求1所述的方法,其特征在于,所述根据所述打开应用指令中包含的应用名称打开设备上的与所述应用名称对应的应用,包括:根据所述打开应用指令的第5和第6个字节得到一个长度值,判断第6个字节之后的数据域数据的长度是否与该长度值相符,若相符则根据所述数据域数据得到应用名称,打开设备上与所述应用名称对应的应用,否则生成状态码为第二预设值的打开应用响应报文。
13.根据权利要求1所述的方法,其特征在于,所述根据所述打开容器指令中包含的应用标识确定当前应用,根据所述打开容器指令中包含的容器名称打开当前应用下的与所述容器名称对应的指定容器,包括: Al:根据所述打开容器指令的第5至第7个字节得到一个长度值,判断第7个字节之后的数据域数据的长度是否与该长度值相符,是则执行A2,否则生成状态码为第二预设值的打开容器响应报文; A2:按照第四预设结构从所述数据域数据中得到应用标识和容器名称; A3:根据应用标识确定当前应用,根据容器名称在当前应用下找到指定容器,打开指定容器。
14.根据权利要求13所述的方法,其特征在于,所述第四预设结构为:应用标识+容器名称。
15.根据权利要求1所述的方法,其特征在于,所述根据所述产生密钥对指令中包含的应用标识和容器标识确定当前应用下的指定容器,根据所述产生密钥对指令中包含的密钥信息在指定容器中创建公私钥文件结构,根据所述产生密钥对指令中包含的文件标识和记录号对所述公私钥文件结构中的预设信息进行填充得到生成的密钥对,包括: B1:根据所述产生密钥对指令的第5至第7个字节得到一个长度值,判断第7个字节之后的数据域数据的长度是否与该长度值相符,是则执行B2,否则生成状态码为第二预设值的打开容器响应报文; B2:按照第五预设结构从所述数据域数据中得到应用标识、容器标识、密钥信息、文件标识和记录号; B3:根据所述应用标识和所述容器标识确定当前应用下的指定容器,根据所述产生密钥对指令中包含的密钥信息在指定容器中创建公私钥文件结构; B4:根据所述文件标识和所述记录号对所述公私钥文件结构中的预设信息进行填充得到密钥对。
16.根据权利要求15所述的方法,其特征在于,所述第五预设结构为:2个字节的应用标识+2个字节的容器标识+4个字节的密钥信息+2个字节的文件标识+2个字节的记录号;所述密钥信息包括生成密钥对的位长。
17.根据权利要求1所述的方法,其特征在于,所述根据所述签名指令中包含的应用标识和容器标识确定当前应用下的指定容器,根据指定容器中的密钥对的文件结构得到文件标识和记录号,根据得到的文件标识和记录号从与所述文件标识对应的记录文件中获取一条与所述记录号对应的记录数据,根据密钥对中的公钥和所述记录数据计算出一个签名预处理结果,根据所述签名预处理结果、密钥对中的私钥对所述签名指令中包含的待签名数据计算得到签名结果,包括: Cl:根据所述签名指令的第5至第7个字节得到一个长度值,判断第7个字节之后的数据域数据的长度是否与该长度值相符,是则执行C2,否则生成状态码为第二预设值的签名响应报文;C2:按照第六预设结构从所述数据域数据中得到应用标识、容器标识和待签名数据; C3:根据应用标识和容器标识确定当前应用下的指定容器,从指定容器中获取密钥对,根据密钥对的文件结构得到文件标识和记录号,根据得到的文件标识和记录号从记录文件中获取一条记录数据; C4:根据密钥对中的公钥和获取的所述记录数据计算出一个签名预处理结果,根据签名预处理结果、密钥对中的私钥对所述待签名数据计算得到签名结果。
18.根据权利要求17所述的方法,其特征在于,所述第六预设结构为:应用标识+容器标识+待签名数据。
19.根据权利要求1所述的方法,其特征在于,当设备判断所述指令的类型为打开容器指令或产生密钥对指令或签名`指令时,还包括确认当前登录状态为用户登录状态的步骤。
【文档编号】G06F21/34GK103729588SQ201310724219
【公开日】2014年4月16日 申请日期:2013年12月25日 优先权日:2013年12月25日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司