本发明涉及通信领域,尤其涉及一种认证设备及其工作方法。
背景技术:
随着互联网和电子商务的快速发展,网络信息安全问题日益凸显。fido协议使用标准的非对称公私钥对来提供安全保障。当用户登录服务器注册信息时,用户的加密设备产生一对非对称密钥对,私钥在加密设备中保留,黑客无法读取,公钥传给服务器,服务器将此公钥和用户对应的账户相关联。当用户登录服务器验证信息时,用户使用设备中的私钥对服务器的挑战数据做签名,服务器使用对应的公钥做验证。
现有技术中,认证设备产生的密钥对是和服务器关联的,一对密钥对应一个服务器,而不是一个认证设备对应一个服务器。当认证设备需要认证多个服务器时,则必须对应存储每个服务器所对应的私钥,占用内存大。
技术实现要素:
为解决现有技术中存在的技术问题,本发明提出了一种认证设备的工作方法,包括:
步骤s1、认证设备等待上位机下发的命令,当接收到认证请求命令时执行步骤s2;
步骤s2、认证设备从认证请求命令中获取挑战参数、第一应用参数和密钥句柄,从密钥句柄中获取密文密钥句柄和校验值,使用预存的校验值密钥对密文密钥句柄进行加密得到比较值;
步骤s3、认证设备判断校验值和比较值是否匹配,是则执行步骤s4,否则向上位机返回认证失败响应,结束;
步骤s4、认证设备使用预存的加密密钥对密文密钥句柄进行解密得到第二应用参数和随机参数,判断第二应用参数与第一应用参数是否一致,是则执行步骤s5;否则向上位机返回认证失败响应,结束;
步骤s5、认证设备使用随机参数和预存的私钥因子生成用户应用私钥,根据第一应用参数和挑战参数生成待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值,并将签名值返回给上位机。
一种认证设备的工作方法,包括:
步骤r1、认证设备等待接收上位机下发的命令,当接收到认证请求命令时,执行步骤r2;
步骤r2、认证设备从认证请求命令中获取挑战参数、应用参数和密钥句柄,从密钥句柄中获取随机参数和校验值,使用预存的设备私钥对应用参数和随机参数进行加密运算生成用户应用私钥;使用设备私钥对用户应用私钥和应用参数进行加密运算得到比较值;
步骤r3、认证设备判断比较值和校验值是否一致,是则执行步骤r4,否则向上位机返回认证失败响应,结束;
步骤r4、认证设备根据应用参数和挑战参数得到待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值,并将签名值返回上位机,结束。
一种认证设备,包括:
接收模块,用于接收上位机下发的认证请求命令;
获取模块,用于从接收模块接收到的认证请求命令中获取挑战参数、第一应用参数和密钥句柄,从密钥句柄中获取密文密钥句柄和校验值;
加密模块,用于使用预存的校验值密钥对获取模块获取到的密文密钥句柄进行加密得到比较值;
第一判断模块,用于判断获取模块获取到的校验值和加密模块加密得到的比较值是否匹配;
发送模块,用于当第一判断模块判定交易值和比较值不匹配时,向上位机返回认证失败响应,结束;
解密模块,用于当第一判断模块判定校验值与比较值匹配时,使用预设的加密密钥对获取模块获取到的密文密钥句柄进行解密得到第二应用参数和随机参数;
第二判断模块,用于判断解密模块解密得到的第二应用参数与获取模块获取到的第一应用参数是否一致;
第一用户应用私钥生成模块,用于当第二判断模块判定第二应用参数与第一应用参数一致时,使用解密模块解密得到的随机参数和预存的私钥因子生成用户应用私钥;
第一待签名数据生成模块,用于根据获取模块12获取到的第一应用参数和挑战参数生成待签名数据;
第一签名模块,用于使用第一用户应用私钥模块生成的用户应用私钥对第一待签名生成模块生成的待签名数据进行签名得到签名值;
发送模块,还用于将第一签名模块生成的签名值返回给上位机,还用于当第二判断模块判定第二应用参数与第一应用参数不一致时,向上位机返回认证失败响应,结束。
一种认证设备,包括:
接收模块,用于接收上位机下发的认证请求命令;
获取模块,用于从接收模块接收到的认证请求命令中获取挑战参数、应用参数和密钥句柄,从密钥句柄中获取随机参数和校验值;
第一用户应用私钥生成模块,用于使用预存的设备私钥对获取模块获取到的应用参数和随机参数进行加密运算生成用户应用私钥;
第一加密模块,用于使用设备私钥对第一用户应用私钥生成模块生成的用户应用私钥和获取模块获取到应用参数进行加密运算得到比较值;
第一判断模块,用于判断第一加密模块生成的比较值和获取模块获取到的校验值是否一致;
第一待签名数据生成模块,用于当第一判断模块判定比较值与校验值一致时,根据获取模块获取到的应用参数和挑战值得到待签名数据;
第一签名模块,用于使用第一用户应用私钥生成模块生成的用户私钥对第一待签名数据生成模块生成的待签名数据进行签名得到签名值;
发送模块,用于将第一签名模块签名得到的签名值返回给上层应用,结束;还用于当第一判断模块判定比较值和校验值不一致时,向上位机返回认证失败响应,结束。
本发明的有益效果为:认证设备内部生成用户应用私钥的原始数据,当进行认证时根据原始数据临时生成用户应用私钥完成身份认证,占用内存小且更加安全可靠。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1提供的一种认证设备的工作方法的流程图;
图2是本发明实施例2提供的一种认证设备的工作方法的流程图;
图3是本发明实施例3提供的一种认证设备的工作方法的流程图;
图4是本发明实施例4提供的一种认证设备的工作方法的流程图;
图5是本发明实施例5提供的一种认证设备的方框图;
图6是本发明实施例6提供的一种认证设备的方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例提供一种认证设备的工作方法,如图1所示,包括:
步骤s1、认证设备等待上位机下发的命令,当接收到认证请求命令时执行步骤s2;
步骤s2、认证设备从认证请求命令中获取挑战参数、第一应用参数和密钥句柄,从密钥句柄中获取密文密钥句柄和校验值,使用预存的校验值密钥对密文密钥句柄进行加密得到比较值;
步骤s3、认证设备判断校验值和比较值是否匹配,是则执行步骤s4,否则向上位机返回认证失败响应,结束;
步骤s4、认证设备使用预存的加密密钥对密文密钥句柄进行解密得到第二应用参数和随机参数,判断第二应用参数与第一应用参数是否一致,是则执行步骤s5;否则向上位机返回认证失败响应,结束;
步骤s5、认证设备使用随机参数和预存的私钥因子生成用户应用私钥,根据第一应用参数和挑战参数生成待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值,并将签名值返回给上位机。
具体的,步骤s5具体包括:认证设备使用随机参数和预存的私钥因子生成用户应用私钥,更新认证计数器值,根据认证计数器值、第一应用参数和挑战参数生成待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值,并将签名值和认证计数器值返回给上位机。
优选的,步骤s4中,认证设备判定第二应用参数与第一应用参数一致之后,执行步骤s5之前还包括:认证设备判断是否接收到用户触发的允许认证信息,是则执行步骤s5,否则向上位机返回认证失败响应,结束。
更进一步的,认证设备判断是否接收到用户触发的允许认证信息之前还包括:认证设备判断是否需要用户参与认证,是则执行认证设备判断是否接收到用户触发的允许认证信息;否则执行步骤s5。
优选的,步骤s1之前还包括:认证设备上电,判断是否为首次上电,是则生成并保存私钥因子、加密密钥和校验值密钥,执行步骤s1,否则执行步骤s1。
可选的,步骤s1中还包括:当接收到注册请求命令时执行步骤a1;
步骤a1、认证设备生成随机参数,根据私钥因子和随机参数生成用户应用私钥,并根据用户应用私钥生成用户应用公钥;
步骤a2、认证设备使用加密密钥对随机数参数和注册请求命令中的应用参数进行加密得到密文密钥句柄,并使用校验值密钥对密文密钥句柄进行加密得到校验值,根据密文密钥句柄和校验值得到密钥句柄;
步骤a3、认证设备根据密钥句柄、用户应用公钥、注册请求命令中的应用参数和挑战参数生成待签名数据,并使用预存的设备私钥对待签名数据进行签名得到签名值,并将用户应用公钥、密钥句柄、预存的设备证书和签名值返回给上位机,结束。
可选的,当接收到注册请求命令之后,执行步骤a1之前,还包括:认证设备判断是否接收到用户触发的允许注册信息,是则执行步骤a1,否则向上位机发送注册失败响应,结束。
优选的,步骤a2具体为:认证设备使用加密密钥对预存的安全芯片参数、随机参数以及注册请求命令中的应用参数进行加密得到密文密钥句柄,并使用校验值密钥对密文密钥句柄进行加密得到校验值,根据密钥句柄和校验值得到密钥句柄;
相应的,步骤s4具体为:认证设备使用预存的加密密钥对密文密钥句柄进行解密得到第二应用参数、安全芯片参数和随机参数,判断第二应用参数与第一应用参数是否一致,并判断解密得到的安全芯片参数与预存的安全芯片参数是否一致,当判定均一致时执行步骤s5,否则向上位机返回认证失败响应,结束。
实施例2
本实施例提供了一种认证设备的工作方法,如图2所示,包括:
步骤101、认证设备上电;
步骤102、认证设备判断是否为首次上电,是则执行步骤103,否则执行步骤104;
优选的,认证设备根据上电标志位判断是否为首次上电,若上电标志位没有置位则为首次上电,将上电标志位置位,执行步骤103,否则执行步骤104;
步骤103、认证设备生成并保存私钥因子、加密密钥和校验值密钥,执行步骤104。
步骤104、认证设备等待上位机下发的命令;当接收到命令时,执行步骤105;
步骤105、认证设备判断命令的类型,若是注册请求命令则执行步骤106;若是认证请求命令则执行步骤112;
需要说明的是,认证设备获取接收到的命令的具体构成为:cla+ins+p1+p2+lc+data+le;cla为命令的类别字节、ins为命令的指令字节、p1和p2为参数、lc为命令体内data中数据的长度、data为数据、le是预期返回的最大字节数;
具体的,认证设备获取接收到的命令的第二个字节,若第二个字节为“01”则判断命令的类型为注册请求命令,若第二个字节为“02”则判断命令的类型为认证请求命令。
例如,认证设备接收到的命令为:
00010000000040cff69b107235a3e56e18baa270a3a097ddbd75f4713e7c8126491e9057dc32310102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f100000;获取接收到的命令的第二个字节为“01”,则判断命令的类型为注册请求命令,执行步骤106;
又如,认证设备接收到的命令为:
00020300000091cff69b107235a3e56e18baa270a3a097ddbd75f4713e7c8126491e9057dc32310102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f10509c3bde1387cedd769dee530f3618845cb4d0fffeb57a755b4a7909d762cbdcd9df5bb2d531858db4027e41ad071958fd29dee200be9c8c62140ba1ee0b26cc6f40bebc02b8b0a500b9a0d43692a12b290000,获取接收到命令的第二字节为“02”,则判断命令的类型为认证请求命令,执行步骤112;
步骤106、认证设备判断是否接收到用户触发的允许注册信息,是则执行步骤107;否则向上位机返回注册失败响应,结束;
具体的,认证设备判断是否存在有效按键状态,是则执行步骤107,否则向上位机返回错误响应,结束;
步骤107、认证设备生成随机参数,根据私钥因子和随机参数生成用户应用私钥,根据用户应用私钥生成用户应用公钥。
具体的,认证设备生成32字节的随机数作为随机参数,使用私钥因子与随机参数异或得到32字节的用户应用私钥,计算预存的椭圆曲线基点的用户应用私钥倍点得到用户应用公钥。
本实施例中,认证设备生成的用户应用公钥具体为:
876d3449c0e14247ee5a785ead075c3a949ba61f7f835a8b7b1e605b21718ff663e5fbbee54cb0466cfe965b8af88515557760cf4ecc64bd0e6e47f7671fb3d2;
步骤108、认证设备从注册请求命令中获取挑战参数和应用参数,获取预存的安全芯片参数,根据应用参数、安全芯片参数和随机参数得到明文密钥句柄,使用加密密钥对明文密钥句柄进行加密得到密文密钥句柄;
具体的,认证设备从注册请求命令中获取应用参数,获取预存的安全芯片参数,将应用参数、安全芯片参数和随机参数顺序拼接得到明文密钥句柄,使用加密密钥对明文密钥句柄进行aescbc加密得到密文密钥句柄;
例如,认证设备从注册请求命令中获取第8字节至第39字节的32字节数据作为挑战参数,获取第40字节至72字节的32字节数据作为应用参数;
本实施例中,32字节的挑战参数具体为:
cff69b107235a3e56e18baa270a3a097ddbd75f4713e7c8126491e9057dc3231;
32字节的应用参数具体为:
0102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f10;
本实施例中,认证设备生成的密文密钥句柄具体为:
a8ccf559c0792de1e88938aed2975e144fdd5ff1376811b90ca17cdc0666a59b6acec983c365bc63c892b24f5c9ae40f51f30d8865e74eabfcb2a997a71f30d7308e047909034150b660353410fb19f0;
步骤109、认证设备使用校验值密钥对密文密钥句柄进行加密得到校验值;根据密文密钥句柄和校验值得到密钥句柄;
本实施例中,认证设备生成的校验值具体为:
8062523a2ea04d244c87be6a60af094e;认证设备将密文密钥句柄和校验值顺序拼接得到密钥句柄,具体为:
a8ccf559c0792de1e88938aed2975e144fdd5ff1376811b90ca17cdc0666a59b6acec983c365bc63c892b24f5c9ae40f51f30d8865e74eabfcb2a997a71f30d7308e047909034150b660353410fb19f08062523a2ea04d244c87be6a60af094e;
步骤110、认证设备根据密钥句柄、用户应用公钥、应用参数和挑战参数生成待签名数据;使用预存的设备私钥对待签名数据进行签名得到签名值;
具体的,认证设备将00、应用参数、挑战参数、密钥句柄和用户应用公钥顺序拼接,对拼接结果进行sha256运算得到待签名数据,使用预存的设备私钥对待签名数据进行签名得到签名值;
需要说明的是,设备出厂时预存了设备私钥和设备证书;
步骤111、认证设备根据用户应用公钥、密钥句柄、设备证书和签名值得到响应数据,并将响应数据返回给上位机,结束;
具体的,认证设备将05、用户应用公钥、密钥句柄的长度、密钥句柄、设备证书和签名值顺序拼接得到响应数据,将响应数据返回给上位机,结束。
步骤112、认证设备从认证请求命令中获取挑战参数、第一应用参数和密钥句柄,从密钥句柄中获取密文密钥句柄和校验值,使用校验值密钥对密文密钥句柄进行加密得到比较值;
具体的,认证设备从认证请求命令中获取第8字节至第39字节的32字节的数据作为挑战参数,获取第40字节至第72字节的32字节的数据作为第一应用参数,获取第73字节至第168字节的96字节的数据作为密钥句柄,获取密钥句柄中的前80字节作为密文密钥句柄,获取密钥句柄中的后16字节作为校验值;
本实施例中的认证设备从认证请求命令中获取到的挑战参数具体为:
cff69b107235a3e56e18baa270a3a097ddbd75f4713e7c8126491e9057dc3231,第一应用参数具体为:
0102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f10,密钥句柄具体为:
a8ccf559c0792de1e88938aed2975e144fdd5ff1376811b90ca17cdc0666a59b6acec983c365bc63c892b24f5c9ae40f51f30d8865e74eabfcb2a997a71f30d7308e047909034150b660353410fb19f08062523a2ea04d244c87be6a60af094e,其中密文密钥句柄具体为:
a8ccf559c0792de1e88938aed2975e144fdd5ff1376811b90ca17cdc0666a59b6acec983c365bc63c892b24f5c9ae40f51f30d8865e74eabfcb2a997a71f30d7308e047909034150b660353410fb19f0,校验值为:8062523a2ea04d244c87be6a60af094e;
步骤113、认证设备判断校验值和比较值是否一致,是则执行步骤114,否则向上位机发送认证失败响应,结束;
步骤114、认证设备使用加密密钥解密密文密钥句柄得到第二应用参数、安全芯片参数和随机参数;
步骤115、认证设备判断第二应用参数是否与第一应用参数匹配,是则执行步骤116,否则向上位机发送认证失败响应,结束;
步骤116、认证设备判断解密得到的安全芯片参数与预存的安全芯片参数是否一致,是则执行步骤117,否则向上位机发送认证失败响应,结束;
步骤117、认证设备根据随机参数和私钥因子生成用户应用私钥;
具体的,认证设备使用私钥因子与随机参数异或得到32字节的用户应用私钥;
步骤118、认证设备判断是否接收到用户触发的允许认证信息,是则执行步骤119,否则向上位机返回认证失败响应,结束;
优选的,步骤118之前还包括:认证设备判断是否需要用户参与认证,是则执行步骤118,否则执行步骤119;
具体的,认证设备获取认证请求命令中获取第三字节,若第三字节为“03”则判断需要用户参与认证,执行步骤118,若第三字节为“07”则判定不需要用户参与认证,执行步骤119;
步骤119、认证设备根据第一或者第二应用参数和挑战参数得到待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值;并根据签名值组织响应数据,将响应数据返回给上位机,结束。
具体的,认证设备将应用参数、01和挑战参数顺序拼接,对拼接结果进行sha256运算得到待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值;
优选的,步骤119中具体为:认证设备更新认证计数器值,根据应用参数、认证计数器值和挑战参数得到待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值;并根据认证计数器值和签名值组织响应数据,将响应数据返回给上位机,结束。
具体的,认证设备更新认证计数器值,将应用参数、01、4字节的认证计数器值和32字节的挑战参数顺序拼接,对拼接结果进行哈希运算得到待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值,并将01、认证计数器值和签名值顺序拼接得到认证请求命令的响应数据,并将响应数据返回给上位机,结束;
本实施例中,认证设备生成的认证请求命令的响应数据具体为:
0100000039304402200efb59f91668f2380343746217d969b46633c49fe3661b903acce1b2fdd4191a0220672ecd2da698fa373483b767df1ce707465a22f1825023deb837ddbddec0c9d6。
需要说明的是,认证设备中无论是在注册结束或者在认证结束之后,还包括:删除用户应用私钥。
实施例3
本实施例提供一种认证设备的工作方法,如图3所示,包括:
步骤r1、认证设备等待接收上位机下发的命令,当接收到认证请求命令时,执行步骤r2;
步骤r2、认证设备从认证请求命令中获取挑战参数、应用参数和密钥句柄,从密钥句柄中获取随机参数和校验值,使用预存的设备私钥对应用参数和随机参数进行加密运算生成用户应用私钥;使用设备私钥对用户应用私钥和应用参数进行加密运算得到比较值;
步骤r3、认证设备判断比较值和校验值是否一致,是则执行步骤r4,否则向上位机返回认证失败响应,结束;
步骤r4、认证设备根据应用参数和挑战参数得到待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值,并将签名值返回上位机,结束。
优选的,步骤r3中认证设备判定比较值和校验值一致时还包括:认证设备判断是否接收到用户触发的允许认证信息,是则执行步骤r4,否则向上位机返回认证失败响应。
可选的,步骤r1中还包括:当认证设备接收到注册请求命令时执行步骤b1;
步骤b1、认证设备生成随机参数,并使用预存的设备私钥对随机参数和注册请求命令中的应用参数进行加密运算得到用户应用私钥,并根据用户应用私钥生成用户应用公钥;
步骤b2、认证设备使用设备私钥对应用参数和用户应用私钥进行加密运算得到校验值,并根据随机参数和校验值生成密钥句柄;
步骤b3、认证设备根据密钥句柄、用户应用公钥、应用参数和挑战参数生成待签名数据,并使用预存的设备私钥对待签名数据进行签名得到签名值,并将用户应用公钥、密钥句柄、预存的设备证书和签名值返回给上位机,结束。
优选的,当认证设备接收到注册请求命令之后,执行步骤b1之前还包括:认证设备判断是否接收到用户触发的允许注册信息,是则执行步骤b1;否则向上位机返回注册失败响应,结束。
优选的,步骤b1具体为:认证设备生成随机参数,并使用预存的设备私钥对随机参数、预存的安全芯片参数以及注册请求命令中的应用参数进行加密运算得到用户应用私钥,并根据用户应用私钥生成用户应用公钥;
步骤r2具体为:认证设备从认证请求命令中获取挑战参数、应用参数和密钥句柄,从密钥句柄中获取随机参数和校验值,使用预存的设备私钥对预存的安全芯片参数、应用参数和随机参数进行加密运算生成用户应用私钥;使用设备私钥对用户应用私钥和应用参数进行加密运算得到比较值。
可选的,步骤r4具体为:认证设备更新认证计数器值,根据认证计数器值、应用参数和挑战参数得到待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值,并将签名值和认证计数器值返回给上位机,结束。
实施例4
本实施例提供了一种认证设备的工作方法,如图4所示,包括:
步骤201、认证设备上电;
步骤202、认证设备等待上位机下发的命令,当接收到命令时,执行步骤203;
步骤203、认证设备判断命令的类型,当命令的类型为注册请求命令时,执行步骤204;当命令的类型为认证请求命令时,执行步骤210;
需要说明的是,认证设备获取接收到的命令的具体构成为:(cla+ins+p1+p2)+(lc+data+le);cla为命令的类别字节、ins为命令的指令字节、p1和p2为参数、lc为命令体内data中数据的长度、data为数据、le是预期返回的最大字节数;
具体的,认证设备获取接收到的命令的第二个字节,若第二个字节为“01”则判断命令的类型为注册请求命令,若第二个字节为“02”则判断命令的类型为认证请求命令。
例如,认证设备接收到的命令为:
00010000000040cff69b107235a3e56e18baa270a3a097ddbd75f4713e7c8126491e9057dc32310102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f100000;获取接收到的命令的第二个字节为“01”,则判断命令的类型为注册请求命令,执行步骤204;
又如,认证设备接收到的命令为:
00020300000091cff69b107235a3e56e18baa270a3a097ddbd75f4713e7c8126491e9057dc32310102030405060708090a0b0c0d0e0f100102030405060708090a0b0c0d0e0f10509c3bde1387cedd769dee530f3618845cb4d0fffeb57a755b4a7909d762cbdcd9df5bb2d531858db4027e41ad071958fd29dee200be9c8c62140ba1ee0b26cc6f40bebc02b8b0a500b9a0d43692a12b290000,获取接收到命令的第二字节为“02”,则判断命令的类型为认证请求命令,执行步骤210;
步骤204、认证设备判断是否接收到用户触发的允许认证信息,是则执行步骤205;否则向上位机发送注册失败响应,结束;
步骤205、认证设备生成随机数作为随机参数,并从注册请求命令中获取挑战参数和应用参数,使用预存的设备私钥对应用参数和随机参数进行加密运算得到用户应用私钥,根据用户应用私钥生成用户应用公钥;
具体的,认证设备生成32字节的随机数作为随机参数,使用预存的设备私钥对应用参数和随机参数进行hmac运算得到用户应用私钥,计算预存的椭圆曲线基点的用户应用私钥倍点得到用户应用公钥。
步骤206、认证设备使用预存的设备私钥对应用参数和用户应用私钥进行加密运算得到校验值;
具体的,认证设备使用预存的设备私钥对应用参数和用户应用私钥进行hmac运算得到校验值;
步骤207、认证设备根据随机参数和校验值生成密钥句柄;
具体的,认证设备将随机参数和校验值顺序拼接得到密钥句柄;
步骤208、认证设备根据密钥句柄、用户应用公钥、应用参数和挑战参数生成待签名数据,使用预存的设备私钥对待签名数据进行签名得到签名值;
具体的,认证设备将00、应用参数、挑战参数、密钥句柄和用户应用公钥顺序拼接,对拼接结果进行sha256运算得到待签名数据,使用预存的设备私钥对待签名数据进行签名得到签名值;
需要说明的是,设备出厂时预存了设备私钥和设备证书;
步骤209、认证设备根据密钥句柄、设备证书和签名值得到响应数据,并将响应数据返回给上位机,结束;
具体的,认证设备将05、用户应用公钥、密钥句柄的长度、密钥句柄、设备证书和签名值顺序拼接得到响应数据,将响应数据返回给上位机,结束。
步骤210、认证设备从认证请求命令中获取挑战参数、应用参数和密钥句柄,从密钥句柄中获取随机参数和校验值,使用预存的设备私钥对应用参数和随机参数进行加密运算生成用户应用私钥,使用设备私钥对用户应用私钥和应用参数进行加密运算得到比较值;
具体的,认证设备从认证请求命令中获取挑战参数、应用参数和密钥句柄,从密钥句柄中获取随机参数和校验值,使用预存的设备私钥对应用参数和随机参数进行hamc运算生成用户应用私钥,使用设备私钥对用户应用私钥和应用参数进行hmac运算得到比较值;
步骤211、认证设备判断比较值和校验值是否一致,是则执行步骤212,否则向上位机返回认证失败响应,结束;
步骤212、认证设备判断是否接收到用户触发的允许认证信息,是则执行步骤213,否则向上位机返回认证失败响应,结束;
步骤213、认证设备根据应用参数和挑战值得到待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值,并根据签名值组织响应数据,将响应数据返回给上位机,结束。
具体的,认证设备将应用参数、01和挑战参数顺序拼接,对拼接结果进行哈希运算得到待签名数据,使用用户应用私钥对待签名数据进行签名得到签名值;
优选的,205具体为:认证设备生成随机参数,并从注册请求命令中获取挑战参数和应用参数,使用预存的设备私钥对随机参数、预存的安全芯片参数以及注册请求命令中的应用参数进行加密运算得到用户应用私钥,并根据用户应用私钥生成用户应用公钥。
相应的,步骤201具体为:认证设备从认证请求命令中获取挑战参数、应用参数和密钥句柄,从所述密钥句柄中获取随机参数和校验值,使用预存的设备私钥对预存的安全芯片参数、应用参数和随机参数进行加密运算生成用户应用私钥;使用设备私钥对所述用户应用私钥和应用参数进行加密运算得到比较值。
优选的,步骤213具体为:认证设备更新认证计数器值,根据认证计数器值、应用参数和挑战参数得到待签名数据,使用用户应用私钥对所述待签名数据进行签名得到签名值,并将签名值和所述认证计数器值返回给上位机。
需要说明的是,认证设备中无论是在注册结束或者在认证结束之后,还包括:删除用户应用私钥
实施例5
本实施例提供一种认证设备,如图5所示,包括:
接收模块11,用于接收上位机下发的认证请求命令;
获取模块12,用于从接收模块11接收到的认证请求命令中获取挑战参数、第一应用参数和密钥句柄,从密钥句柄中获取密文密钥句柄和校验值;
加密模块13,用于使用预存的校验值密钥对获取模块12获取到的密文密钥句柄进行加密得到比较值;
第一判断模块14,用于判断获取模块12获取到的校验值和加密模块13加密得到的比较值是否匹配;
发送模块15,用于当第一判断模块14判定交易值和比较值不匹配时,向上位机返回认证失败响应,结束;
解密模块16,用于当第一判断模块14判定校验值与比较值匹配时,使用预设的加密密钥对获取模块12获取到的密文密钥句柄进行解密得到第二应用参数和随机参数;
第二判断模块17,用于判断解密模块16解密得到的第二应用参数与获取模块12获取到的第一应用参数是否一致;
第一用户应用私钥生成模块18,用于当第二判断模块17判定第二应用参数与第一应用参数一致时,使用解密模块16解密得到的随机参数和预存的私钥因子生成用户应用私钥;
第一待签名数据生成模块19,用于根据获取模块12获取到的第一应用参数和挑战参数生成待签名数据;
第一签名模块110,用于使用第一用户应用私钥生成模块生成的用户应用私钥对第一待签名生成模块19生成的待签名数据进行签名得到签名值;
发送模块15,还用于将第一签名模块110生成的签名值返回给上位机,还用于当第二判断模块17判定第二应用参数与第一应用参数不一致时,向上位机返回认证失败响应,结束。
优选的,认证设备还包括:
第三判断模块,用于当第二判断模块17判定第二应用参数与第一应用参数一致时,判断是否接收到用户触发的允许认证信息;
第一用户应用私钥生成模块18,具体用于当第三判断模块判定接收到用户触发的允许认证信息时,使用解密模块16解密得到的随机参数和预存的私钥因子生成用户应用私钥;
发送模块15,还用于当第三判断模块判定没有接收到用户触发的允许认证信息时,向上位机返回认证失败响应,结束
可选的,认证设备还包括:
第四判断模块,用于当第二判断模块17判定第二应用参数与第一应用参数一致时,判断是否需要用户参与认证;
第三判断模块,用于当第四判断模块判定需要用户参与认证时,判断是否接收到用户触发的允许认证信息;
发送模块15,还用于当第四判断模块判定不需要用户参与认证时,向上位机返回认证失败信息,结束。
优选的,认证设备还包括:
更新模块,用于更新认证计数器值;
第一待签名数据生成模块19,具体用于根据更新模块更新后的认证计数器值、获取模块12获取到的第一应用参数和挑战参数生成待签名数据;
发送模块15,具体用于将第一签名模块110签名得到的签名值和更新模块更新后的认证计数器值返回给上层应用。
可选的,认证设备还包括:
上电模块,用于上电;
第五判断模块,用于判断是否为首次上电;
数据生成模块,用于当第五判断模块判定为首次上电时,生成并保存私钥因子、加密密钥和校验值密钥;
接收模块11,用于当第五判断模块判定不是首次上电时,接收上位机下发的认证请求命令。
更进一步的,认证设备还包括:
接收模块11,还用于接收注册请求命令;
随机参数生成模块,用于当接收模块11接收到注册请求命令时,生成随机参数;
第二用户应用私钥生成模块,还用于根据数据生成模块生成的私钥因子和随机参数生成模块生成的随机参数生成用户应用私钥;
用户应用公钥生成模块,用于根据第二用户应用私钥模块生成的用户应用私钥生成用户应用公钥;
密文密钥句柄生成模块,用于使用数据生成模块生成的加密密钥对随机参数生成模块生成的随机参数和接收模块11接收到的注册请求命令中的应用参数进行机密得到密文密钥句柄;
校验值生成模块,用于使用数据生成模块生成的校验值密钥对密文密钥句柄生成模块生成的密文密钥句柄进行加密得到校验值;
密钥句柄生成模块,用于根据密文密钥句柄生成模块生成的密文密钥句柄和校验值生成模块生成的校验值得到密钥句柄;
第二待签名数据生成模块,用于根据密钥句柄生成模块生成的密钥句柄、用户应用公钥生成模块生成的用户应用公钥、注册请求命令中的应用参数和挑战参数生成待签名数据;
第二签名模块,用于使用预存的设备死要对第二待签名数据生成模块生成的待签名数据进行签名得到签名值;
发送模块15,还用于将用户应用公钥模块生成的用户应用公钥、密钥句柄生成模块生成的密钥句柄、预存的设备证书和第二签名模块生成的签名值返回给上位机,结束。
可选的,认证设备还包括:
第六判断模块,用于判断是否接收到用户触发的允许注册信息;
随机参数生成模块,用于当第六判断模块判定接收到用户触发的允许注册信息之后,生成随机参数;
发送模块15,还用于当第六判断模块判定没有接收到用户触发的允许注册信息之后,向上位机发送注册失败响应,结束。
优选的,密文密钥句柄生成模块,具体用于使用预存的安全芯片参数、数据生成模块生成的加密密钥对随机参数生成模块生成的随机参数和接收模块11接收到的注册请求命令中的应用参数进行机密得到密文密钥句柄;
解密模块16,具体用于当第一判断模块14判定校验值与比较值匹配时,使用预设的加密密钥对获取模块12获取到的密文密钥句柄进行解密得到第二应用参数、安全芯片参数和随机参数;
第二判断模块17,具体用于判断解密模块16解密得到的第二应用参数与获取模块12获取到的第一应用参数是否一致;并判断解密模块16解密得到的安全芯片参数和预存的安全芯片参数是否一致;
第一用户应用私钥生成模块18,用于当第二判断模块17判定第二应用参数与第一应用参数一致,且解密得到的安全芯片参数和预存的安全芯片参数一致时,使用解密模块16解密得到的随机参数和预存的私钥因子生成用户应用私钥;
发送模块15,具体用于当第二判断模块17判定第二应用参数与第一应用参数不一致,或解密得到的安全芯片参数和预存的安全芯片参数不一致时,向上位机返回认证失败响应,结束。
实施例6
本实施例提供一种认证设备,如图6所示,包括:
接收模块21,用于接收上位机下发的认证请求命令;
获取模块22,用于从接收模块21接收到的认证请求命令中获取挑战参数、应用参数和密钥句柄,从密钥句柄中获取随机参数和校验值;
第一用户应用私钥生成模块23,用于使用预存的设备私钥对获取模块22获取到的应用参数和随机参数进行加密运算生成用户应用私钥;
第一加密模块24,用于使用设备私钥对第一用户应用私钥生成模块23生成的用户应用私钥和获取模块22获取到应用参数进行加密运算得到比较值;
第一判断模块25,用于判断第一加密模块24生成的比较值和获取模块22获取到的校验值是否一致;
第一待签名数据生成模块26,用于当第一判断模块25判定比较值与校验值一致时,根据获取模块22获取到的应用参数和挑战值得到待签名数据;
第一签名模块27,用于使用第一用户应用私钥生成模块23生成的用户私钥对第一待签名数据生成模块26生成的待签名数据进行签名得到签名值;
发送模块28,用于将第一签名模块27签名得到的签名值返回给上层应用,结束;还用于当第一判断模块25判定比较值和校验值不一致时,向上位机返回认证失败响应,结束。
优选的,认证设备还包括:
第二判断模块,用于判断是否接收到用户触发的允许认证信息;
第一判断模块25,具体用于当第二判断模块判定接收到用户触发的允许认证信息时,判断第一加密模块24生成的比较值和获取模块22获取到的校验值是否一致;
发送模块28,还用于当第二判断模块判定没有接收到用户触发的允许认证信息时,向上位机返回认证失败响应,结束。
优选的,接收模块21,还用于接收上位机下发的注册请求命令;
随机参数生成模块,用于当接收模块21接收到注册请求命令时,生成随机参数;
第二用户应用私钥生成模块,用于使用预存的设备私钥对随机参数生成模块生成的随机参数生成模块生成的随机参数和接收模块21接收到的注册请求命令中的应用参数进行加密运算得到用户应用私钥;
用户应用公钥生成模块,用于根据第二用户应用私钥生成模块生成的用户应用私钥生成用户应用公钥;
第二加密模块,用于使用设备私钥对应用参数和第二用户应用私钥生成模块生成的用户应用私钥进行加密运算得到校验值;
密钥句柄生成模块,用于根据随机参数生成模块生成的随机参数和第二加密模块生成的校验值生成密钥句柄;
第二待签名数据生成模块,用于根据密钥句柄生成模块生成的密钥句柄、用户应用公钥生成的用户应用公钥生成用户应用公钥、应用参数和挑战值生成待签名数据;
第二签名模块,用于使用预存的设备私钥对待签名数据进行签名得到签名值;
发送模块28,还用于将用户应用公钥生成模块生成的用户应用公钥、密钥句柄生成模块生成的密钥句柄、预存的设备证书和第二签名模块生成的签名值返回给上位机,结束。
可选的,认证设备还包括:
第三判断模块,用于当接收模块21接收到注册请求命令时,判断是否接收到用户触发的允许注册信息;
随机参数生成模块,具体用于当第三判断模块判定接收到用户触发的允许注册信息时,生成随机参数;
发送模块28,还用于当第三判断模块判定没有接收到用户触发的允许注册信息时,向上位机返回注册失败响应,结束。
优选的,第二用户应用私钥生成模块,具体用于使用预存的设备私钥对随机参数生成模块生成的随机参数生成模块生成的随机参数、预存的安全芯片参数和接收模块21接收到的注册请求命令中的应用参数进行加密运算得到用户应用私钥;
相应的,第一用户应用私钥生成模块23,具体用于使用预存的设备私钥对预存的安全芯片参数、获取模块22获取到的应用参数和随机参数进行加密运算生成用户应用私钥。
优选的,认证设备还包括:更新模块,用于更新认证计数器值;
第一待签名数据生成模块26,具体用于当第一判断模块25判定比较值与校验值一致时,根据更新模块更新后的认证计数器值、获取模块22获取到的应用参数和挑战值得到待签名数据;
发送模块28,具体用于将第一签名模块27签名得到的签名值和更新模块更新后的认证计数器值返回给上层应用,结束。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。